CNode

咨询nodejs中setInterval问题~

Xxuhaijinsky2008发布于14 年前最后回复14 年前8 回复17256 浏览0 收藏

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

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)

W
workgang#1·14 年前

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

W
wbpmrck#4·14 年前
引用 wbpmrckjs基础问题,第一个参数应该是一个函数,Node会在回调中调用参数的apply方法

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

L
letonlife#5·14 年前

setInterval(aa,1000);

X
xuhaijinsky2008#6·14 年前
引用 letonlifesetInterval(aa,1000);

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

W
wbpmrck#7·14 年前

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

参与回复
登录后即可参与回复。登录