由於效能問題、潛在的安全風險及其不建議使用,許多開發人員不贊成向setTimeout 傳遞字串的做法地位。然而,在極少數情況下,這種語法可能是有益的。
setTimeout 和 setInterval 的傳統語法涉及傳遞一個表示要執行的程式碼的字串。例如:
setTimeout('doSomething(someVar)', 10000);
然而,現代JavaScript 提倡使用函數引用:
setTimeout(function() {
doSomething(someVar);
}, 10000);
在考慮是否有任何正當理由偏離推薦語法時,就會出現爭論。一個可能的論點可能是希望存取駐留在全域範圍內但可能已在本地覆蓋的函數或變數。
儘管有這一基本原理,但使用字串強烈建議不要使用 setTimeout。全域變數仍然可以透過視窗物件的屬性來存取。例如:
setTimeout(window.doSomething(someVar), 10000);
允許將字串作為setTimeout 和setInterval 的參數根源於歷史因素。 JavaScript 的早期版本僅支援字串。添加傳遞函數引用的功能是後來添加的。為了確保向後相容性,瀏覽器仍然允許字串語法,即使它已被棄用。
雖然在某些情況下在技術上可以將字串傳遞給 setTimeout,但實踐通常不可行由於存在替代方法而推薦。使用函數引用可以提高效能、增強安全性並遵守現代程式碼準則。因此,為了清晰、可維護性和整體程式碼質量,應避免使用已棄用的字串語法。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3