я написал небольшой скрипт, и мне любопытно, почему консоль регистрирует все значения сразу против задержки выходного сигнала до тех пор, таймауты не удовлетворены ...Никакой задержки с SetTimeout
JS:
var test_obj = {
init: function(i) {
if (i < 10000) {
console.log(i + "<br />");
i = i+i;
setTimeout(test_obj.init(i), i);
}
}
};
$(document).ready(function() {
var i = 1;
test_obj.init(i);
});
Поскольку 'test_obj.init (я)' 'возвращает undefined', поэтому то, что' SetTimeout (test_obj.init (я), я), 'на самом деле, является' SetTimeout (false, i); '. Обратите внимание, что 'test_obj.init' выполняется до' setTimeout', и вы должны передать ссылку на функцию вместо результата функции. Это обычная ошибка, которую обычно делают начинающие JS. :) –
Вы можете использовать привязку ecmascript, если вы не хотите использовать анонимную ссылку на функцию. – PSL
Означает ли это, что всякий раз, когда я использую скобки, сценарий всегда будет выполняться немедленно? –