0
点赞
收藏
分享

微信扫一扫

01-ES6语法:块作用域构造let


这里所说的ES6是ECMAScript 6的简写,它是由JavaScript演变而来的。1996年11月,网景公司将JavaScript提交给欧洲计算机制造商协会(ECMA)进行标准化。ECMA-262的第一个版本于1997年6月被ECMA组织采纳,这也是ECMAScript(简称ES)的由来。

块级声明用于声明在指定块的作用域之外无法访问的变量。这里的块级作用域是指函数内部或者字符{}内的区域。

如下的代码,使用var定义的变量:

<script>
    // 计算价格1。
    function calculate1(vip) {
        var amount = 0;
        if (vip) {
            var amount = 1;
            var amount = 100;
            var amount = 1000;
            console.info(amount);
        }
        console.info(amount);
    }
    calculate1(true);
</script>

最终输出的结果如下图所示:

01-ES6语法:块作用域构造let_javascript

可以看到amount变量被最后的定义覆盖掉了。

在ES6中,用let限制块级作用域,而var限制函数作用域。代码如下:

<script>
    // 计算价格2。
    function calculate2(vip) {
        var amount = 0;
        if (vip) {
            // let amount = 1;
            // let amount = 100;
            let amount = 1000;
            console.info(amount);
        }
        console.info(amount);
    }
    calculate2(true);
</script>

上述代码输出的结果如下图所示:

01-ES6语法:块作用域构造let_javascript_02

这说明,块{}中使用的let声明的amount变量虽然和外部的同名,但并没有覆盖外部amount的变量值。

另外有一点需要注意的是,如果在同一个块内部使用let同时声明几个同名的变量则会出现如下的错误:

01-ES6语法:块作用域构造let_javascript_03

举报

相关推荐

0 条评论