美文网首页步步为营之JavaScript
JS-基础知识-let与const

JS-基础知识-let与const

作者: 刘淘 | 来源:发表于2020-06-11 23:05 被阅读0次

    1. let与const

    var声明的变量会挂载在window上,而let和const声明的变量不会
    1.为了解决JS变量提升的隐患,将JS变量限定在某一个指定的作用域范围内,引入let定义变量
    2.对"先使用后声明"的let变量,JS将会解析编译不通过,将会抛出Uncaught ReferenceError,也不会执行对应的上下文

    image.png

    3.在函数内部的let变量仍然遵循"先声明后使用"原则,如果当前函数体中未声明,则往函数外向上查找(找到则使用,未找到则报错)

    image.png
    image.png
    (小彩蛋:请注意同样都是未声明先使用 let var提示不同哦)

    4.在函数参数中仍然遵循"先声明后使用"原则, 参数也是依次"从左至右,从上至下"原则声明和赋值


    image.png
    image.png

    2. var let const 异同点

    相同点:
    三者都遵循“先声明后使用”原则, 函数内部优先查找内部是否声明,未声明可访问外部变量

    不同点:
    1.var/let变量可单独声明,之后再某个时刻再赋值(且可多次赋 值);const常量必须声明同时并赋值,且之后不可再次赋值(无法改变)
    2.使用var定义的变量(或函数)没有块作用域概念,使用let/const定义的变量(或函数)是存在块作用域的
    3.使用var定义的变量(或函数)可重复声明,在同一作用域内使用let/const定义的变量(或函数)是不能重复声明的

    推荐点:
    优先使用const来定义,如果变量值确实可能会发生变化,则考虑使用let(如for循环迭代值), 尽量不使用var来定义变量

    注意点:
    ⚠️const如果是基本类型,const变量不能改变其内存地址

    image.png
    ⚠️对于引用类型而言,内部成员仍然可改变
    image.png
    如果不希望引用类型的内部成员被外界篡改,可使用"对象冻结"(Object Freeze)技术
    image.png

    相关文章

      网友评论

        本文标题:JS-基础知识-let与const

        本文链接:https://www.haomeiwen.com/subject/hqxwtktx.html