《你不知道的JavaScript(上卷)》笔记:提升

  1. 2

    a = 2;
    var a;
    console.log(a); // 2
  2. undefined

    console.log(2); // undefined
    var a = 2;
  3. 函数被提升

    foo();
    function foo() {
        console.log( a ); //undefined
        var a = 2;
    }

    相当于:

    function foo() {
        console.log( a ); //undefined
        var a = 2;
    }
    foo();
  4. TypeError

    foo(); // 不是ReferenceError, 而是TypeError!
    var foo = function bar() {
        // ...
    }
  5. 函数优先

    foo(); //1
    var foo;
    function foo() {
        console.log(1);
    }
    foo = function() {
        console.log(2);
    }
  6. 覆盖

    foo(); //3
    function foo() {
        console.log(1);
    }
    var foo = function() {
        console.log(2);
    }
    function foo() {
        console.log(3);
    }
  7. if else

    foo(); // "b"
    var a = true;
    if(a) {
        function foo() {
            console.log("a");
        }
    }else{
        function foo() {
            console.log("b");
        }
    }

猜你喜欢

转载自blog.csdn.net/wuweitiandian/article/details/79438448