ES6入门——let和const命令

let命令

ES6新增了let命令用于声明变量。它的用处和var很相似,只不过let所声明的变量只在let命令所在的代码块内有效。看下下面代码:

  {
        let a = 10;
        var b = 9;
    }
    alert( a );  // ReferenceError: a is not defined
    alert( b );  //9

再看看下面代码:

var a = [];
    for(var i = 0; i < 10; i++) {
        var c = i;
        a[i] = function() {
            console.log( c );
        };
    }
    a[6]();  //9

而如果使用let声明的话,最后输出的值是“6”。代码如下:

var a = [];
for (var i = 0; i < 10; i++) {
        let c = i;
        a[i] = function() {
            console.log( c );
        };
}
a[6]();  //6

此外,let声明的变量不会提升。看下下面的代码片段。

    function do_someting() {
        console.log( a );  //ReferenceError
        let a = 2;
    }

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

    // 报错
    {
        let a = 10;
        var a = 1;
    }

    // 报错
    {
        let a = 10;
        let a = 1;
    }

let实际上是JavaScript增加的块级作用域。

    function foo() {
        let n = 6;  
        if (true) {
            let n = 10;
        }
        console.log( n ); //6
    }

上面代码有两个代码块,都声明了n变量,运行后输出的是6。这表明外层代码块不受内层代码块的影响。如果,改成使用var定义变量n的话,最后输出的就是10.

另外,ES6还规定,函数本身的作用域在其所在的代码块作用域之内。

    function f() { console.log("I am outside"); }
    (function () {
        if (false) {
            //重复声明一次函数f
            function f() {
                console.log("I am inside");
            }
        }

        f();
    }());

上面的代码片段,在ES5中运行会得到“Iam inside”, 但是在ES6中运行,则会得到“Iam outside”

const命令

const是用来声明常量的。一旦声明,其值就不能改变。

    const PI = 3.1415;
    console.log( PI ); //PI

    PI = 3;
    console.log( PI );  //3.1415

    const PI = 3.1;
    console.log( PI );  //3.1415

有一点需要我们注意的是,对常量的重复定义不会报错,它只会默默的失败。

const的作用域与let命令相同:即只在声明所在的块级作用域内有效。

    if(condition) {
        const MAX = 5;
    }

    // 常量MAX在此处不可见(或者说不可得)

此外,const常量也不可重复声明。

    var message = "Hello!";
    let age = 25;

    //以下两行都会报错
    const message = "Goodbye!";
    const age = 30;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值