有人可以向我解释下面三个例子中发生了什么? 我的想法是第一个例子,bar
没有执行(这只是一个函数声明),所以当foo
执行时,输出是undefined
?对于第二个示例,执行bar
,以便返回值3。对于第三个例子,我不知道它为什么产生8.有人可以解释这些函数的定义和提升?
// 1)
function foo() {
function bar() {
return 3;
}
}
foo(); // undefined
// 2)
function foo() {
function bar() {
return 3;
}
return bar();
}
foo(); // 3
// 3)
function foo(){
function bar(){
return 3;
}
return bar();
function bar() {
return 8;
}
}
foo(); // 8
'bar()'在第三个示例中声明了两次。由于第二个声明是最后一个,所以返回8. – ElGavilan
1)在第一种情况下,如果调用foo(),则会执行foo(),并且bar()现在可用。但为了执行栏,你需要明确地调用它。 2)在第二种情况下,您正在调用foo(),并且在foo()栏中可用,并且您正在通过编写return bar()来调用bar()。 3)第三种情况见第二种情况的解释。欲了解更多信息,请参阅:http://stackoverflow.com/questions/7295634/javascript-nested-function –
如何明确调用bar? – DaeYoung