CONST
1、不允许重复声明
2、不属于顶层对象window
3、不存在变量提升
4、暂时性死区
5、块级作用域
const 声明常量,在一开始就要进行初始化;
var声明的对象属于顶层对象window,可以通过window.x去访问(不好,污染全局变量);const声明的常量则不行
const声明的代码,必须先声明在使用不存在变量提升,这样更安全;
const特点:不许重复声明,不属于顶层对象window,不存在变量提升,暂时性死区(先定义后调用,定义之前的区域它是死掉的),块级作用域
在ES3里边声明常量(只读不能改变值)
Object.defineProperty(window,'es',{ value: 'es6', writable: false })
const (声明常量,一开始就得赋值,否则会报错)
var允许变量重名,const不允许重复声明
const声明的常量不属于顶层对象window
//变量提升,当输出变量在定义之前,会把后面的定义提在前面,但不赋值
console.log(str); = var str; result: undefined;
var str ='SE6'; = console.log(str);
str ='SE6'
const不存在变量提升。//先去声明再去使用
暂时性死区//先定义后调用
块级作用域//如果在大括号内声明变量,则该变量只在大括号内有效
学习入门第一天就开始
const定义常量的特点
const
不允许重复声明
是唯一的
不属于顶层对象window
const 避免污染全局变量
不存在变量提升
暂时性死区
块级作用域
用const 声明一个不可改变的常量
const 不能重复声明
const 不属于顶层对象window
const不存在变量提升
暂时性死区
块级作用域
const
console.log(str); var str='es6'; //两者相同 (变量提升) const不会变量提升 var str; console.log(str); str='es6'; //暂时性锁区 if(true){ console.log(str); //报错 const str='es6'; } //块级作用域 if(true){ const str='es6'; } console.log(str); //会报错
const相对var ,不允许重复赋值
const一开始就要赋值
暂时性死区
ES6 明确规定,如果区块中存在 let 和 const 命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错。
总之,在代码块内,使用 let 命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”(temporal dead zone,简称 TDZ)
const
const : 不允许重复声明
不属于顶层对象window
不存在变量提升
暂时性死区:先定义后使用
块级作用域:外部无法使用
const : 不允许重复声明
不属于顶层对象window
不存在变量提升
暂时性死区
块级作用域
暂时性死区,在定义前使用该变量会报错
const:
1、不允许重复声明 2、不属于顶层对象window
3、不存在变量提升 4、暂时性死区 5、块级作用域
输入!快速生成框架
const不属于顶层对象window
const类对象具有块级作用域(只能在大括号内使用)
var类对象es=window.es
const
const
不允许重复声明
不属于顶层对象window
不存在变量提升
暂时性死区
块级作用域
const作用域特点
const块级作用域。如图,只作用于{}内
在{console.log(str)}形成暂时性死区
const不存在变量提升,一定要先声明后使用
变量提升,相当于下面先声明,后赋值
const 声明的变量不属于顶层对象window(全局变量)