美文网首页
ECMAScript学习笔记

ECMAScript学习笔记

作者: SmileMylife | 来源:发表于2019-08-06 21:03 被阅读0次

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

    var a = 20;
    function test() {
        a = 10;
        let a = 5;
        return a;
    }
    test();
    

    以下内容在使用的时候需要注意:
    a.该方法在执行时有时会报错,因为在给x形参赋值的时候y还没有定义,所以会报错,报错原因也是因为暂时性死区。

    function test(x=y, y=2) {
        return [x, y];
    }
    

    b.下述情况也会报错:

    var x = x;    //不会报错,x为undefined
    let x = x;    //会报错,因为x还未定义
    

    c.块级作用域中不允许变量重复声明:
    function test(args1) {
    let args1 = 10; //报错,因为args1相当于重复声明了
    }
    2.变量解构
    a.以下代码中x的默认值是惰性求值的,只有在数组中的数值严格=undefined的时候才会求值。

    let [x =test()] = [1];
    //下述代码和上述等价
    if(x === undefined) {
        x = test();
    }
    

    b.默认值可以引用解构赋值的其他变量,但该变量必须已经声明。

    let [x = 1, y = x] = [];     // x=1; y=1
    let [x = 1, y = x] = [2];    // x=2; y=2
    let [x = 1, y = x] = [1, 2]; // x=1; y=2
    let [x = y, y = 1] = [];     // ReferenceError
    

    相关文章

      网友评论

          本文标题:ECMAScript学习笔记

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