有人可以向我解釋下面三個例子中發生了什麼? 我的想法是第一個例子,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