js 的提升效应

下面来看一段代码:

var i=1;
$(function(){
console.log(i);
})

这样一段js代码会打印出什么呢?答案大概都知道是:1

那将上面的代码再修改一下呢?

var i=1;
$(function(){
console.log(i);
var i=2;
})

这样会打印出什么呢?可能大部分都会认为:1,可惜答案不是,那是2吗?也不是,答案是:undefined

为什么是:undefined呢,这就是js的提升效应:

 同一作用域下,声明变量函数的语句会提升到作用域最上面 ,js的编译机制就是这样,编译器  把声明全部提前,但是 赋值又没有提前
上诉代码编译的时候就会变成下面这样:
 var i = 1;
$(function () {
     var i;
    console.log(i);
    i = 2;
}); 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值