儘管普遍認為向 setTimeout 傳遞字串是不可取的,但在某些情況下可能會出現這種情況練習是有趣的。這就引出了一個問題:是否有違反此約定的合法理由?
拒絕字串參數的傳統原因是它們在全域範圍內執行,從而帶來效能挑戰和潛在的安全漏洞。現代語法避開了這種方法,而是將函數作為參數傳遞給 setTimeout:
setTimeout(function() { doSomething(someVar); }, 10000);
考慮函數或變數全域存在但在本地被覆蓋的場景。開發人員可能會考慮使用已棄用的語法來存取全域實例:
setTimeout('doSomething(someVar)', 10000);
但是,透過 window 物件存取全域變數(例如 window.globalVar)消除了此異常的需要。
setTimeout 和 setInterval 中字串參數的允許可能是由於它們的歷史優先權。最初,這些函數只接受包含要執行的程式碼的字串。後來引入了 Function 物件作為有效參數。追溯禁止字串參數會破壞現有程式碼。
以上是setTimeout 中棄用字串參數是否有例外?的詳細內容。更多資訊請關注PHP中文網其他相關文章!