Airbnb JavaScript 编码规范 中关于 引用References 的说明:
- 对所有的引用使用
const
- 如果你一定需要可变动的引用,使用
let
代替var
❓为什么建议对所有的引用使用 const ?
◎ 这可以确保你无法对引用重新分配,重新分配可能会导致 bug 和难以理解的代码。
❓为什么使用 let 代替 var ?
◎ 因为 let 是块级作用域,而 var 是函数作用域。
const
定义的变量不可以修改,而且必须初始化。// const 正确用法: const a = 1; console.log(a); //1 // const 错误用法,必须初始化 : const a; console.log(a); //报错 // const 错误用法,变量值不可修改: a = 111; console.log(a); //报错
let
是块级作用域,函数内部使用 let 定义后,对函数外部无影响。定义的变量可以修改,但仅限于定义的代码块内,如果不初始化会输出 undefined 。let b = 2; console.log('函数外let定义b:' + b); //2 function changeB(){ let b = 222; console.log('函数内let定义b:' + b); //222 } changeB(); console.log('函数调用后let定义b不受函数内部定义影响:' + b);//2
var
定义的变量可以修改,如果不初始化会输出 undefined,不会报错。var c = 3; // var c;//不会报错 console.log('函数外var定义c:' + c); //3 function changeC(){ c = 333; console.log('函数内var定义c:' + c); //333 } changeC(); console.log('函数调用后var定义c为函数内部修改值:' + c); //333
const
和 let
都是块级作用域,只存在于定义它们对代码块内;而 var
是函数作用域。
{
const a = 1;
let b = 1;
var c = 1;
}
console.log(a); // ReferenceError,引用错误
console.log(b); // ReferenceError,引用错误
console.log(c); // 1