2-4练习1

来源:3-1 声明对象的方式(上)

Nekosan

2018-06-05 21:43:21

var a = 111
function test(){
alert(a);
var a=11;
function subTest(){
alert(a);
}
return subTest;
}
test()();

为啥第一次返回undefined而不是111?

写回答

1回答

好帮手慕星星

2018-06-06

在test函数里面弹出a,首先会看这个函数里面是否有定义a,如果有就用自己函数中的,如果没有就用外面的。因为test函数里面有a的定义,但是在弹出a的下面,所以就会弹出‘undefined’。你把函数内部的var a=11;去掉就理解了。自己再测试下,祝学习愉快~~

0
hekosan
h 我明白了,这是变量提升的问题。在函数内部,执行时先将a的定义放入内存,但是由于在alert语句后面,还没初始化,所以此时的值是undefined;之后执行完变量a初始化的语句后,a的值变为11,所以下面的函数再次调用a时,就会弹出a = 11
h018-07-06
共1条回复

0 学习 · 4826 问题

查看课程

相似问题