【总结】关于js变量提升

直接上代码例子1:

console.log(a);

输出结果是 报错

 

再看例子2:

console.log(a);

var a = 1;

输出结果是 undefined

 

其实例2等同于如下例3:

var a;

console.log(a);

a=1;

此处例2的变量a的定义就是被提升到最前面,效果和例3相同。

 

接下来看下经典的函数声明,

var test = function(){ ... }

function test(){ ... }

这两种写法到底有什么区别呢?

区别就在于变量提升的先后顺序!

 

请看例子4:

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

function test(){ console.log(2); }

test();

输出结果是 1

 

例4中的第二个函数定义就是被提升到了最前面导致代码效果是这样的(例5):

function test(){ console.log(2); }

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

test();

输出结果是 1

例5按顺序执行,函数test定义再定义,最后的test自然输出的是最后一次定义的结果(输出 1)。

 

再稍作修改,例6:

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

test = function (){ console.log(2); }

test();

输出结果是 2

这个例6就很简单了,函数test定义再重新赋值(也可以说重新定义吧),输出的也是最后一次定义的结果(输出 2)。

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端开发黑子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值