匿名函数导致问题
Anonymous Function Causing Problems
唯一给我带来问题的是执行匿名函数调用。我什至打了一个空电话,看看里面的代码有没有问题;事实并非如此。
这是我写的格式:
(function(){})();
我确信这是正确的标准用法,但它一直抛出 this error:
Uncaught TypeError: (intermediate value)(intermediate value)(...) is
not a function(anonymous function)
在站点 运行 时可以找到错误 HERE。
上面的代码摘录与我程序中的代码没有什么不同
也许你有类似的东西
(function() { return 123; })
(function(){})();
变成
(123)();
但是123
不是函数。所以它抛出
TypeError: (intermediate value)(...) is not a function
要修复它,请添加一个分号:
(function() { return 123; }); // <-- semi-colon
(function(){})(); // No error
注意分号在函数表达式中是必需的,但在函数声明中不是必需的:
function foo() {} // No semi-colon
(function(){})(); // No error
给您带来麻烦的代码是
ctrl.deleteObject = function(obj){
var index = ctrl.objects.indexOf(obj);
if( index > -1 ){
this.objects.splice(index, 1);
}
}
//}
// //START GAME
(function(){
//ctrl.createObject(new PlayerPaddle(50, 50));
//ctrl.init();
})();
去掉评论,我们得到
ctrl.deleteObject = function(obj){
var index = ctrl.objects.indexOf(obj);
if( index > -1 ){
this.objects.splice(index, 1);
}
}
(function(){
})();
对ctrl.deleteObject
的赋值没有以分号结束,下一行的括号看起来像是赋值的有效延续,所以Javascript不会为你插入分号.您最终调用的不是赋值和匿名函数调用,而是您尝试分配给 ctrl.deleteObject
的函数,然后调用它的 return 值,这不是函数。
唯一给我带来问题的是执行匿名函数调用。我什至打了一个空电话,看看里面的代码有没有问题;事实并非如此。
这是我写的格式:
(function(){})();
我确信这是正确的标准用法,但它一直抛出 this error:
Uncaught TypeError: (intermediate value)(intermediate value)(...) is not a function(anonymous function)
在站点 运行 时可以找到错误 HERE。
上面的代码摘录与我程序中的代码没有什么不同
也许你有类似的东西
(function() { return 123; })
(function(){})();
变成
(123)();
但是123
不是函数。所以它抛出
TypeError: (intermediate value)(...) is not a function
要修复它,请添加一个分号:
(function() { return 123; }); // <-- semi-colon
(function(){})(); // No error
注意分号在函数表达式中是必需的,但在函数声明中不是必需的:
function foo() {} // No semi-colon
(function(){})(); // No error
给您带来麻烦的代码是
ctrl.deleteObject = function(obj){
var index = ctrl.objects.indexOf(obj);
if( index > -1 ){
this.objects.splice(index, 1);
}
}
//}
// //START GAME
(function(){
//ctrl.createObject(new PlayerPaddle(50, 50));
//ctrl.init();
})();
去掉评论,我们得到
ctrl.deleteObject = function(obj){
var index = ctrl.objects.indexOf(obj);
if( index > -1 ){
this.objects.splice(index, 1);
}
}
(function(){
})();
对ctrl.deleteObject
的赋值没有以分号结束,下一行的括号看起来像是赋值的有效延续,所以Javascript不会为你插入分号.您最终调用的不是赋值和匿名函数调用,而是您尝试分配给 ctrl.deleteObject
的函数,然后调用它的 return 值,这不是函数。