Let和Const命令
1.let
let基础用法:
1.let只在其代码块中才有效,代码块外调用let定义的字符会报错。
2.let不存在变量提升,即在变量定义之前调用该变量而能调用到。var定义的变量会存在这个问题,这也是let和var不同点之一。
var定义
此出结果
undifined是因为变量提升只是把定义提升了,赋值没有提升,相当于{var n; console.log(n); n=2;}
let定义
3.let存在暂时性死区,即在一个代码块内若使用let定义了一个变量,那么在let定义之前该变量都是不能操作的,此时在代码块开始之后,let开始之前就被称作暂时性死区。
第一个
console.log会报错ReferenceError,因为此时处在死区,第二个console.log()会抛出undefined,此时abc这个变量才被声明但是还未被定义,最后一个console.log()就能正常输出10。
4. let不允许重复声明,在一个封闭的代码块中,使用let声明之后就不允许任何方式的其他声明来声明该变量,否则会报错。
const
const基础用法
1. const与let非常类似,他们的区别就是const定义一个变量之后该变量必须立马给该变量赋一个只读的值,且该值不能改变。若只声明而不赋值则会报错。
2. 对于const来说,并不是变量不能改动,而是该变量所指的内存地址所保存的数据不能改变,所以对于对象和数组,即该变量只能指向某一个对象或者数组,但是对象和数组中的数据是可以改变的。