• var、let、const区别


    1.let不存在变量提升,必须升明后才可用。

    'use strict';
    (function(){
          console.log(varTest);
          console.log(letTest);
          var varTest = 'var';
          let letTest = 'let';
    }())
    //结果:undefined
    // letTest is not defined

    2.let不允许在相同作用域内,重复声明同一个变量。

    (function(){
            let let1 = 'test let';
            let let1 = 'let changed';//Identifier 'let1' has already been declared
            console.log(let1);
        })();

    而var则可以正常使用

    (function(){
            var var1 = 'test var';
            var var1 = 'var changed';
            console.log(var1);//var changed
        })();

    3.let为块级作用域。当let用来做循环变量计数时,循环结束它便结束,不会泄露。

    var s = 'hello';
        for(var i=0;i< s.length;i++){
            console.log(s[i]);//hello
    }
    console.log(i);//5
    'use strict';
    var s = 'hello';
        for(let i=0;i< s.length;i++){
            console.log(s[i]);//hello
        }
    console.log(i);//i is not defined

    4.const声明一个只读的常量。一旦声明,常量的值就不能改变。与let基本类似,同样声明的常量也不会提升,只能在声明后使用。

    'use strict';
        (function(){
            const a = 1;
            a = 2;//Assignment to constant variable.
            console.log(a);
    })()

    5.const本质上保证的不是变量的值不能改动,而是变量指向的内存地址不能改动。所以对于简单类型的数据(数值、字符串、布尔值),值就保存在变量指向的那个地址,因此等同于常量。但对于复合类型的数据(对象、数组)变量指向的内存地址保存的只是一个指针,const只能保证这个指针是固定的,至于它指向的数据结构是不是可变的,就完全不能控制了。

    'use strict';
        (function(){
            const foo = {name:'haoxl',age:18}
            foo.age = 25;
            console.log(foo);//{name: "haoxl", age: 25}
            foo = {name:'liuxb',age:25};//Assignment to constant variable.
            console.log(foo);
    })()

    ……

  • 相关阅读:
    2019牛客暑期多校训练营(第二场)H Second Large Rectangle
    HDU -1506 Largest Rectangle in a Histogram&&51nod 1158 全是1的最大子矩阵 (单调栈)
    吉哥系列故事——完美队形II(马拉车算法)
    Theme Section
    激光雷达和毫米波雷达
    模型压缩95%:Lite Transformer,MIT韩松等人
    分布式深度学习DDL解析
    TOF摄像机可以替代Flash激光雷达吗?
    毫米波雷达分类和技术方案
    高精地图与自动驾驶(下)
  • 原文地址:https://www.cnblogs.com/haoxl/p/6817589.html
Copyright © 2020-2023  润新知