js变量提升详解

涉及知识点:变量提升、块级作用域、闭包

参考文档:

文档一

文档二

(1)变量提升,很简单,就是把变量提升提到函数的top的地方。我么需要说明的是,变量提升只是提升变量的声明,并不会把赋值也提升上来
(2)函数提升是把整个函数都提到前面去。
(3)函数提升优先于变量提升

代码解析:

<script>
    console.log(typeof a);
    a();
    var a = 3;
    function a() {
        console.log(typeof a);
    }
    console.log(typeof a);
    a = 6;
    a();
    // 输出结果为: function function number "a is not a function"
    
    // 解析后的代码实际长这样:
    // var a;
    // function a() {
    //     console.log(typeof a);
    // }
    // console.log(typeof a); // function
    // a(); // function
    // a = 3;
    // console.log(typeof a); // number
    // a = 6;
    // a();// "a is not a function"
</script>
<script>
	// 变量提升&闭包&作用域
    var v='Hello World';
    (function(){
        console.log(v); // undefined
        var v='I love you';
    })()
</script>
<script>
    var x = 1;
    console.log(x); // 1
    if (true) {
        var x = 2;
        console.log(x); //2
    }
    console.log(x);// 2
</script>
<script>
    let x = 1;
    console.log(x); // 1
    if (true) {
        let x = 2;
        console.log(x); // 2
    }
    console.log(x); // 1
</script>
<script>
    var x = 1;
    console.log(x); // 1
    if (x) {
        (function () {
            var x = 2;
            console.log(x); // 2
        }());
    }
    console.log(x); // 1
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值