1)有人可以說明setTimeout如何在執行線程方面起作用。setTimeout的執行上下文(JavaScript)
考慮:
function foo() { alert('foo'); }
function bar() { alert('bar'); }
setTimeout(foo,1000);
bar();
或
function foo() { alert('foo'); setTimeout(foo,1000); }
function bar() { alert('bar'); }
setTimeout(foo,1000);
bar();
或
function foo() { alert('foo'); setTimeout(foo,1000); }
function bar() { /* an execution that runs with unknown time */ }
setTimeout(foo,1000);
bar();
或
function foo() { alert('foo'); setTimeout(foo,1000); }
function bar() { /* some ajax call that reply with unknown time */ }
setTimeout(foo,1000);
bar();
或
function foo() { alert('foo'); setTimeout(foo,1000); }
function bar() { alert('foo'); setTimeout(bar,1000); }
setTimeout(foo,1000);
setTimeout(bar,1000);
2)有人能解釋如何,爲什麼「此」對象不setTimeout的工作,我們能做些什麼來解決這個問題?
所有對setTimeout的調用都不會執行任何操作。您將「foo」作爲**字符串**傳遞,這將被解釋爲意味着您需要一個其主體看起來像字符串內容的函數。 – Pointy
查看MDN:https://developer.mozilla.org/en-US/docs/DOM/window.setTimeout#The_.22this.22_problem – Blender
'setTimeout'的上下文是'window',使用'這'來自函數緩存之前。 – elclanrs