前端面试题var、let、const 三者的区别

var、let、const
三者的区别
区别 let const var
重复声明 不能重复声明,会报SyntaxError错 const 定义常量,值不能修改的变量叫做常量,一定要赋初始值,因为不能修改。 可以重复声明
块级作用域 拥有 拥有 不拥有
会不会污染全局变量(挂载在window上) 不会 不会 会
说明
1.let和const也存在变量提升,只是提升的方式不同
• var变量提升:变量的声明提升到顶部,值为undefined
• let、const变量提升: 变量声明提升到顶部,只不过将该变量标记为尚未初始化
let 和 const存在暂时性死区,代码执行过程中的一段时间内,在此期间无法使用标识符,也不能引用外层作用域的变量。

let answer;
function fn(){
//如果此时没有将变量变量提升到这里,answer应该取外层answer的值
console.log(answer); //Uncaught ReferenceError: Cannot access ‘answer’ before initialization
let answer=42;
}
2.var创建的全局变量->全局对象的属性,let和const在全局作用域声明的变量->不是全局对象的属性
3.如果常量是个数组或对象,对其内部元素修改,不算对常量的修改,不会报错。常量指向了一个地址,地址不变就不会报错。
变量提升和函数提升
• 变量声明升级
通过var定义(声明)的变量,在定义语句之前的就可以访问到
但是值是undefined
• 函数声明提升
通过function声明的函数,在之前就可以直接调用。

你可能感兴趣的:(微信小程序,小程序,前端)