Может кто-нибудь, пожалуйста, объясните мне, что происходит в следующих трех примерах? Мои мысли для первого примера, 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() доступны, и вы вызываете bar(), записывая return bar(); 3) В третьем случае см. Объяснение во втором случае. Для получения дополнительной информации см. Это: http://stackoverflow.com/questions/7295634/javascript-nested-function –
как вызвать бар явно? – DaeYoung