由於效能問題、潛在的安全風險及其不建議使用,許多開發人員不贊成將字符字串傳遞給setTimeout 的做法地位。但是,在極少數情況下,此語法可能會很有用。
setTimeout 和 setInterval 的傳統語法涉及傳遞表示要執行的程式碼的字串。例如:
<code class="javascript">setTimeout('doSomething(someVar)', 10000);</code>
然而,現代JavaScript 提倡使用函數引用:
<code class="javascript">setTimeout(function() { doSomething(someVar); }, 10000);</code>
當考慮是否有任何偏離推薦語法的正當理由。一個可能的論點可能是希望存取駐留在全域範圍內但可能已在本地覆蓋的函數或變數。
儘管有這樣的理由,但使用字串強烈建議不要使用 setTimeout。全域變數仍然可以透過視窗物件的屬性來存取。例如:
<code class="javascript">setTimeout(window.doSomething(someVar), 10000);</code>
允許將字串作為 setTimeout 和 setInterval 的參數可能源自於歷史因素。 JavaScript 的早期版本僅支援字串。添加傳遞函數引用的功能是後來添加的。為了確保向後相容性,瀏覽器仍然允許字串語法,即使它已被棄用。
雖然在某些情況下在技術上可以將字串傳遞給 setTimeout,但實踐通常不可行由於存在替代方法而推薦。使用函數引用可以提高效能、增強安全性並遵守現代程式碼準則。因此,為了清晰、可維護性和整體程式碼質量,應避免使用已棄用的字串語法。
以上是是否有必要將字串傳遞給 setTimeout?的詳細內容。更多資訊請關注PHP中文網其他相關文章!