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

本文探讨了JavaScript中函数提升的特性与变量作用域的行为,通过具体代码示例展示了函数声明与变量声明在执行上下文中的提升过程,以及这如何影响程序的执行流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  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");
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值