JavaScript变量提升和函数提升

变量提升

变量提升只是提升变量的声明,并不会提升赋值

1.

alert(v);//Hello,这个毋庸置疑,傻子都能看出来

2.

var v = "Hello";
(function(){
    alert(v);//Hello,这个也是显而易见的
})();

3.

var v = "Hello";
(function(){
    alert(v);//undefined,这下你有没有闷逼????
    var v = "I love you";
})();

上面代码,变量声明被提升了,相当于如下代码

var v = "Hello";
(function(){
    var v;
    alert(v);//undefined,这下这个结果你应该比我清楚
    v = "I love you";
})();

4.

(function(){
    var a = "one";
    var b = "two";
    var c = "three";
})();

实际上它是这样的

(function(){
    var a,b,c;
    a = "one";
    b = "two";
    c = "three";
})();

函数提升

函数提升是把整个函数提到当前作用域的顶部

函数定义的两种写法:函数表达式和函数声明方式

只有函数声明形式才能被提升

1.函数声明方式提升[成功]

function myTest(){
    foo();
    function foo(){
        alert("foo函数提升成功");
    }
}
myTest();//foo函数提升成功

2.函数表达方式提升[失败]

function myTest(){
    foo();
    var foo = function(){
        alert("foo函数提升失败");
    }
}
myTest();//报错:foo is not a function
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值