一直使用var定义变量,ES6的出现给变量定义增加了两个大将let,const。那它们有什么区别呢。
1、const关键字
它的作用就是定义一个常量,一旦定义无法更改,不能重复声明覆盖;
const一般在require一个模块的时候用或者定义一些全局常量。
主要是比较一下var和let的使用;
2、var 关键字定义
function test(){
for(var i=0;i<2;i++){
console.log('for循环内:'+i);
}
console.log(j);
alert(j);
console.log('for循环外:'+i);
var j='hi';
}
test();
第一个for循环里的console输出for循环内:0,for循环内:1;
第三个console输出for循环外:2;
第二个console输出undefined;
alert输出undefined;
3、let关键字定义
第一个for循环里的console输出for循环内:0,for循环内:1;
第三个console输出 i is not defined,报错啦;
第二个console输出 空
alert(j)输出undefined。
比较后发现,
var声明的变量,其作用域为该语句所在的函数内,且存在变量提升现象;
let声明的变量,其作用域为该语句所在的代码块内,且不能重复声明覆盖;
很多人说let有没有变量提升的作用,但是上面测试的例子,console输出空,alert输出undefined,都没有报error,所以对于let声明变量提升的问题,暂时保留怀疑。
let 声明的变量,块作用域,不重复声明覆盖,限制了变量的作用域,保证变量不会去污染全局变量,所以尽量将var改为用let。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。