Вы не передаете setTimeout
функцию d
во втором примере; вместо этого вы передаете d()
, что является результатом вызова d
.
Результат вызова d
равен undefined
, поскольку он ничего не возвращает, что преобразуется в строку "undefined"
, которая затем eval
ed, ничего не делая ...
Что касается стека вызовов, поскольку вы звоните d
внутри c
, поэтому вы видите c
в стеке вызовов. Чтобы уточнить, ваш второй пример такой же, как
function c() {
var temp = d();
setTimeout(temp, 1000);
}
function d() {
debugger;
}
c();