var与let区别
#tag
var与let区别的笔记
1、作用域不一样。var声明变量,只有函数作用域和全局作用域,没有块级作用域,也就是说可以在代码块{}
外部使用。而let可以实现块级作用域,只能在代码块{}
内有效,在{}
之外不能访问。
1 |
|
2、let没有变量提升。ES6明确规定,如果区块中存在let和const命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错。在代码块内,使用let命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区” temporal dead zone,简称 TDZ。
1 |
|
3、let变量不能重复声明。之前用var定义变量,在多人开发一个项目时,比如都定义了一个变量a,但各自用途不同,后面定义的a会把前面定义的覆盖掉,而用let就能解决这个问题,不能重复声明以避免混淆。
1 |
|
4、循环作用域。在for循环中,不仅循环体{}
会生成块级作用域,循环条件()
也会生成块级作用域,循环条件()
的块级作用域是循环体{}
块级作用域的父级作用域,var声明的变量是全局的,包括循环体内与循环体外,let声明的变量作用域只在循环体内,循环体外的变量不受影响。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!