let、const、var区别?

letconstvar区别?

  • let和const不存在变量提升(没有预解析,var有预解析)。
  • let和const在同一作用域范围内不能重复定义变量。(var可以)。
  • let和const有严格的作用域(块级作用域:变量在代码块中被执行结束后会被释放掉)。(var存在于全局作用域)。
  • const声明一个只读常量(或者复杂类型的变量)即变量指向的那个内存地址不能改动。const必须初始化,不能只定义不赋值,保护全局变量不受污染。let定义变量。

常见题目:

 for(var k=0;k<10;k++){
            setTimeout(function() {
            console.log(k);    // 执行此代码时,同步代码for循环已经执行完成
        }, 10);
        }
// 输出结果:10(10次)

把var改为let:

k虽然在全局作用域声明,但是在for循环体局部作用域中使用的时候,变量会被固定,不受外界干扰。

 for(let k=0;k<10;k++){
            setTimeout(function() {
            console.log(k);    // k 是循环体内局部作用域,不受外界影响。
        }, 10);
        }
// 输出结果:0  1  2  3  4  5  6  7  8 9

  

 

posted @ 2021-03-03 11:29  任雨前行  阅读(89)  评论(0编辑  收藏  举报