为了账号安全,请及时绑定邮箱和手机立即绑定

下面的JS代码会报错,请问原因?

下面的JS代码会报错,请问原因?

SMILET 2019-04-13 08:37:02
javascriptvarx=0;varfoo=function(callback){returnwindow.setTimeout(callback,17);}(functionsayX(){x+=1;console.log(x);foo(sayX);}())报错信息:UncaughtTypeError:fooisnotafunction测试环境:chrome44.0.2403.130mPS:最好能深入的说明一下原因。
查看完整描述

2 回答

?
梦里花落0921

TA贡献1772条经验 获得超6个赞

不是特别清楚你的意图,你是想这样:
varx=0;
varfoo=function(callback){
returnwindow.setTimeout(callback,17);
};//此处加分号
(functionsayX(){
x+=1;
console.log(x);
foo(sayX);
}())
还是这样:
varx=0;
functionfoo(callback){
returnwindow.setTimeout(callback,17);
}
(functionsayX(){
x+=1;
console.log(x);
foo(sayX);
}())
}后跟(就直接被调用了。你那样写是在给foo赋一个匿名函数的执行结果,不是在定义函数。
把你那段代码拆开就变成:
varx=0;
varfoo;
functionanonymous(callback){
returnwindow.setTimeout(callback,17);
};
foo=anonymous(functionsayX(){
x+=1;
console.log(x);
foo(sayX);
}());
当然会出错
                            
查看完整回答
反对 回复 2019-04-13
?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

改成这个就可以了
varx=0;
functionfoo(callback){
returnwindow.setTimeout(callback,17);
}
(functionsayX(){
x+=1;
console.log(x);
foo(sayX);
}())
                            
查看完整回答
反对 回复 2019-04-13
  • 2 回答
  • 0 关注
  • 337 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信