將字串傳遞給setTimeout:避免且異常的原因
將字串傳遞給setTimeout 或其setInterval 對應項通常會引起devido 的不滿在全球範圍內執行、潛在的效能問題和安全漏洞的擔憂。推薦的替代方案是使用匿名函數作為第一個參數。
但是,在某些情況下可能有一個可取之處。如果程式設計師打算存取存在於全域範圍內但已在本地覆蓋的函數或變量,他們可以考慮使用已棄用的字串語法。然而,由於可能存在變數陰影,這種方法被認為是糟糕的程式設計實踐。
在大多數情況下,可以將全域變數作為視窗物件的屬性(例如,window.globalVar)訪問,從而使其無需訴諸基於字串的函數呼叫。因此,不太可能遇到使用字串作為 setTimeout 或 setInterval 的第一個參數真正有益的情況。
歷史上,程式碼字串作為這些函數的參數的唯一可用性源自於JavaScript 1.0 的限制。僅在 JavaScript 1.2 中才引入 Function 物件參考作為參數。保持與舊版瀏覽器和腳本的兼容性會阻止開發人員完全消除基於字串的呼叫。透過了解注意事項和罕見的異常,程式設計師在編寫涉及 setTimeout 和 setInterval 的程式碼時可以做出明智的決定。
以上是使用 setTimeout 呼叫基於字串的函數是否合理?的詳細內容。更多資訊請關注PHP中文網其他相關文章!