一、let(相当于之前的var)
1、没有预解析,不存在变量提升
在代码块内,只要let定义变量,在之前使用,都是报错,需要先定义完,再使用
2、在同一个作用域里,不能重复定义变量,会报错
3、for循环,小括号里是父级作用域,里面是一个子作用域,如果for循环子作用域内let了一个与父作用域相同名字的变量,不会报错,而是会使用子作用域内的变量
二、const(特性和let一样)
1、const定义变量,必须有值,不能后赋值,不能修改(数组push除外)
例如:const a = [‘asd’,’qwe’]
不过依然可以通过 a.push(‘zxc’)为数组增加值,这种现象是对象引用的特性,其实还有其他修改的方法。
2、Object.freeze(对象) 冻结一个对象,禁止再修改包括数组的push。
例如:const a =Object.freeze([‘asd’,’qwe’]) ,这样后续的push会报错。
网友评论