美文网首页
声明变量——var, let, const

声明变量——var, let, const

作者: twentyshaw | 来源:发表于2019-08-26 19:58 被阅读0次

    1. var

    var a = 2 相当于:

    var a;
    a = 2 ;
    

    即: var声明的变量会发生变量提升

    1.1 有var 和没有 var 的区别:

    1.1.1 在顶级作用域声明


    如上,不管用不用var,后面赋值的一定会覆盖前面的赋值

    1.1.2 在函数内部用var声明


    如上,在函数内部,用var声明的变量,只在函数内部有效

    1.1.3 在函数内部不用var声明


    在函数内部不用var声明,就相当于声明了一个全局变量,在全局内有效

    2. let

    2.1 let所声明的变量,只在let命令所在的代码块内有效。

    2.2 不存在变量提升, 一定要先声明再使用

    2.3 暂时性死区

    ES6 明确规定,如果区块中存在let和const命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错。



    在let存在的那个区块内,tmp被声明之前就被赋值了

    2.4 由于以上性质,在for循环中,推荐用let

    for (let i = 0; i < 10; i++) {
         // ...
    }
    

    这样,i就只在循环体内有效。
    另外,for循环还有一个特别之处,就是设置循环变量的那部分是一个父作用域,而循环体内部是一个单独的子作用域。



    上面代码正确运行,输出了 3 次abc。这表明函数内部的变量i与循环变量i不在同一个作用域,有各自单独的作用域。

    2.5 不允许重复声明


    函数内部也不能重新声明参数


    2.6 const

    • 声明一个只读的常量。一旦声明,常量的值就不能改变。
    • 与let一样, 只在声明所在的块级作用域有效,没有变量提升,有暂时性死区,不可重复声明。
    • 一声明就必须马上赋值,只声明不赋值会报错


    相关文章

      网友评论

          本文标题:声明变量——var, let, const

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