美文网首页
let和var的区别

let和var的区别

作者: 6659a0f02826 | 来源:发表于2020-12-21 13:39 被阅读0次

ES2015已经用let代替var,并完善了var的一些特性,之所以换了一个关键词还保留原有的var关键词是因为原有的很多项目在使用var,所以不能取消,而是用一个新的关键词替代。
一、块级作用域(let声明的变量只能在代码块中被访问到)
以前块没有独立的作用域,外部成员也能访问块内部的变量。

🌰
if内就是一个块,在内部声明一个变量,外部能访问。

if(true){
 var foo = 'zcy
}
console.log(foo)
zcy

let声明的变量只能在代码块中被访问到。把var改为let。

if(true){
 let foo = 'zcy
}
console.log(foo)
ReferenceError: foo is not defined

所以,在块级作用域内,外部是无法访问的。

二、let和var的另一个很大的区别在于:let的声明不会出现提升的情况。
而var声明的变量都会被提升到最顶部。

🌰
用var声明变量,执行这两行代码,打印的结果是undefined,没有报错误,说明foo已经声明,只是还没有赋值

console.log(foo)
var foo = 'zcy'
undefined

用let声明变量,就报错了

console.log(foo)
let foo = 'zcy'
ReferenceError:Cantnot access 'foo' before initialization

相关文章

网友评论

      本文标题:let和var的区别

      本文链接:https://www.haomeiwen.com/subject/gwernktx.html