首先,需要知道的是为 setTimeout 或 setInterval 提供一个字符串作为第一个参数,这本身并不是一个错误。它是完全合法的JavaScript代码。这里的问题更多的是性能和效率的问题。很少有人解释的是,如果你把字符串作为setTimeout或setInterval的第一个参数,它将被传递给函数构造器,被转换成一个新函数。这个过程可能很慢,效率也很低,而且很少有必要。
将一个字符串作为这些方法的第一个参数的替代方法是传入一个函数。
setInterval("logTime()", 1000); setTimeout("logMessage('" + msgValue + "')", 1000);
更好的选择是传入一个函数作为初始参数:
setInterval(logTime, 1000); setTimeout(function() { logMessage(msgValue); }, 1000);