Q
匿名函數引起問題
3
A
回答
8
給您帶來麻煩的代碼是
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
的函數,然後調用其返回值(不是函數),而不是調用和匿名函數調用。
4
也許你有類似
(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
相關問題
- 1. Javascript匿名函數問題
- 2. PHP匿名函數範圍問題
- 3. setTimeout和匿名函數問題
- 4. 訪問匿名函數
- 5. 訪問匿名函數
- 6. 匿名函數
- 7. `arguments.callee`如何引用匿名函數?
- 8. Javascript中的匿名函數引用
- 9. 從匿名函數引用自我
- 10. IIS6匿名訪問問題
- 11. 匿名與非匿名函數Lua
- 12. TypeScript匿名函數
- 13. 與匿名函數
- 14. 匿名函數pecularities
- 15. 與匿名函數
- 16. javascript匿名函數
- 17. array_walk匿名函數
- 18. JavaScript匿名函數
- 19. Tcl匿名函數
- 20. 命名匿名函數
- 21. Clojure:命名匿名函數
- 22. 從PHP匿名函數訪問變量
- 23. 以匿名函數訪問此代碼
- 24. 訪問$(本)從匿名jQuery函數內
- 25. 匿名函數與非匿名函數一樣強大
- 26. 在匿名函數中調用匿名函數(初始)
- 27. 試圖使匿名函數,在MATLAB中的匿名函數內
- 28. PHP調用匿名函數內部匿名函數
- 29. 匿名函數使用匿名函數使用此功能時
- 30. 分配匿名函數分配匿名函數
是否發佈特定的代碼(空參數,空主體)給你一個錯誤?如果沒有,最簡單的代碼是否會給你帶來錯誤?如果它確實產生了錯誤,你調用了什麼上下文,以及JavaScript引擎在抱怨什麼?只有內容是該行的腳本會給你錯誤嗎? – user2357112
在Chrome 43中發佈的代碼不會產生錯誤。剛剛嘗試過。 – joshp
@ user2357112發佈的確切代碼(空匿名函數)會引發錯誤。我使用的是沒有添加庫的vanilla js,只有120行代碼。我在全球範圍內調用它。 – Andrew