首先,需要知道的是為 setTimeout
或 setInterval
提供一個字符串作為第一個參數,這本身并不是一個錯誤。它是完全合法的JavaScript代碼。這里的問題更多的是性能和效率的問題。很少有人解釋的是,如果你把字符串作為setTimeout
或setInterval
的第一個參數,它將被傳遞給函數構造器,被轉換成一個新函數。這個過程可能很慢,效率也很低,而且很少有必要。
將一個字符串作為這些方法的第一個參數的替代方法是傳入一個函數。
setInterval("logTime()", 1000);
setTimeout("logMessage('" + msgValue + "')", 1000);
更好的選擇是傳入一個函數作為初始參數:
setInterval(logTime, 1000); setTimeout(function() { logMessage(msgValue);
}, 1000);
作者:王大冶
鏈接:https://juejin.cn/post/7161959592967012366