【前端面试题】var、let和const的区别-js
ES6之前用 var 定义变量。ES6中新增了块级作用域(由花括号{ }包裹)。let 和 const 声明的变量属于块级作用域,var 声明的变量属于函数作用域。
1. var
① var定义的变量,没有块的概念,可以跨块访问。
②var定义的变量可以修改,如果不初始化会输出undefined,不会报错。
③重复声明不报错,视作修改。
2. let
①定义的变量,只能在块作用域里访问,不能跨块访问,但不影响作用域链。
②不能重复声明变量。
//不影响作用域链 可以输出123.
{
let n = 123;
function fn(){
console.log(n);
}
fn();
}
3. const
①const 定义的变量,一旦定义后,就不能修改,即 const 声明的为常量。使用时必须初始化(即必须赋值),只能在块作用域里访问。
②const 声明创建一个值的只读引用,只是变量标识符不能重新分配。所以,对象属性修改和数组元素变化不会出发 const 错误。
③声明对象类型一般使用 const,来规避误操作修改对象