咨询nodejs中setInterval问题~
发布于 12 年前 作者 xuhaijinsky2008 16665 次浏览 最后一次编辑是 8 年前

为何以下两种代码的运行结果不一样呢?

setInterval(function(){console.log(2);},1000);

可以正常运行。

function aa(){
console.log(1);
}
setInterval('aa()',1000);

写成这个样子就会报错,错误信息为:

timers.js:232
callback.apply(timer, args);
         ^
TypeError: Object aa() has no method 'apply'
at Timer.exports.setInterval.timer.ontimeout (timers.js:232:14)
8 回复

setInterval(aa,1000);

果然OK了,谢谢。但是在前面页面上用的话是要加单引号的吧?

js基础问题,第一个参数应该是一个函数,Node会在回调中调用参数的apply方法

基础问题。 aa() 是在运行函数。 aa() 要返回一个函数就不会错了。

好的,谢谢。我被w3school的示例误导了,看来有所不同的。http://www.w3school.com.cn/htmldom/met_win_setinterval.asp

好的,谢谢。我被w3school的示例误导了,看来有所不同的。http://www.w3school.com.cn/htmldom/met_win_setinterval.asp

@xuhaijinsky2008 不是误导,w3c里面那种用法是在浏览器环境下支持的。如果是字符串类型,会使用类似eval的方式去执行。Nodejs环境下貌似不支持传字符串,也不推荐这么做

@wbpmrck 明白了,呵呵,多谢。

回到顶部