es6let,const命令(一)

1、var和let的区别:

块作用域:如果一段代码使用大括号包起来的,大括号里面就是一个块作用域,声明了let变量,块作用域外生命周期结束,提示引用错误。

es6let,const命令(一)

所以let声明的变量只在块作用域里有效。报引用错误而不是undefind是因为es6是使用严格模式的,es6不写这句话默认使用严格模式。

const也有块作用域的概念,不过要注意的是声明的时候必须复值:const i=1;const生命的常量不能被修改,对象是应用类型,最后返回值是对象内存中的指针,k是指向声明对象的存储的指针,指针不变,对象是可以变的。

es6let,const命令(一)

3、Symbol,声明数据类型提供独一无二的值,用symbol声明的变量值永远不相等,是唯一的

es6let,const命令(一)//false

let a3 = Symbol.for('a3');Symbol.for和Symbol也是生成独一无二的值,区别是Symbol.for时,For后面的括号内是一个key值,声明变量时会检查Key值是否在全局注册过,注册过返回那个值,没注册过,调生成的独一无二的那个值。

es6let,const命令(一)


Symbol作用:

es6let,const命令(一)

用Symbol做key值,通过for in和let of是拿不到属性的。

es6let,const命令(一)

解决方法:object.getOwnPropertySymbols(obj).forEach(function(item){

console.log(obj[item]);

}//返回一个数组

Reflect是一个对象,包含symbol的变量作为key值得属性,也包含非symbol的变量作为key值得属性,返回值也是一个数组。


前端大牛可以加我qq:952109577,帮忙指点。