浅谈let,const和var的异同点

2018-12-03  本文已影响0人  super静_jingjing

let、const和var三者都是申明一个变量的,let和const是ES6新增的。在一个作用域中,用var申明的变量会被提升到该作用域的最前面,但是let和const不会。
var 展示:

function test(){
    if(true){
        var a = 1;
    }
    console.log(a); // 打印出1。在if的作用域中申明的a被提升出来了
}
test();

最有名的面试题:for循环中定时器的闭包

for(var i = 0; i < 5; i++) {
  setTimeout(() => {
    console.log(i) //5, 5, 5, 5, 5
  }, 0)
}
console.log(i) //5 i跳出循环体污染外部函数

let展示:

function test(){
    if(true){
        var a = 1;
    }
    console.log(a); //  报错: a is not defined
}
test();

在var使用的for循环中定时器的闭包面试题,用let的时候,外层的i也会报错
const和let一样,都是在当前申明的块中有效,不能像var一样提升作用域;
但是const是不能修改的,let可以被反复修改;

上一篇下一篇

猜你喜欢

热点阅读