为了账号安全,请及时绑定邮箱和手机立即绑定

有关JS的执行顺序的问题。

有关JS的执行顺序的问题。

元芳怎么了 2018-09-24 17:22:27
在【js函数和变量的声明与执行顺序】https://www.cnblogs.com/highs... 这篇文章中看到一个地方没有理解。没有理解为什么第3行代码处alert的值为什么是undefined?我的想法是,预编译期时候,js获取到了声明的var a,这个时候只是声明,并没有赋值。然后预编译结束。接下来开始从上往下执行代码:执行第一行 var a=1;,然后再往下执行f()的时候,调用f方法:alert(a), 这个时候不是已经执行过第一行,a已经有值了吗?还是我绕进了什么我没出来的弯子...?求指点
查看完整描述

1 回答

?
狐的传说

TA贡献1804条经验 获得超3个赞

在函数内部存在var a;所以函数内部alert(a)就不会去函数外部找变量a了,在加上函数内部也存在变量提升,所以var a = 3 会将var a;提升到函数最前面。执行到第一个alert(a)的时候,a是声名了但是没有赋值。因此输出undefined. 可以对比一下代码:
var a = 1;
function f(){
alert(a);//1
a = 3;
alert(a);//3
}

f()


查看完整回答
反对 回复 2018-09-24
  • 1 回答
  • 0 关注
  • 551 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信