我知道的功能被宣佈立即打,像這樣call是什麼意思:foo(function(params){...});
(function(arg) {...}(value))();
,但是這是什麼意思:
functionName(function(params){...});
正是在演示/演示(的第一個非行代碼) .js文件的Ace editor,這是我遇到過的最糟糕的JavaScript代碼。我想知道它是否真的寫得不好,或者我是否太新手來破譯它。
我知道的功能被宣佈立即打,像這樣call是什麼意思:foo(function(params){...});
(function(arg) {...}(value))();
,但是這是什麼意思:
functionName(function(params){...});
正是在演示/演示(的第一個非行代碼) .js文件的Ace editor,這是我遇到過的最糟糕的JavaScript代碼。我想知道它是否真的寫得不好,或者我是否太新手來破譯它。
在這種情況下,
outerFunc(function(params) { ... })
包含在一個匿名函數,它outerFunc
用來控制它如何定義自己的模塊定義。在the code you're referring to中,他們使用RequireJS中的define
函數來做幾件事情,包括指定依賴關係和執行上下文。
define()
是CommonJS模塊規範的一部分,需要在您使用的不同JavaScript平臺上以不同的方式實現。這種代碼設計比合理;它遵循可能成爲未來語言核心部分的建議規範。
將匿名函數傳遞給函數functionName()
。
如果寫得不好,或者你太新手了,那取決於,因爲它可能只是這種風格的合理使用方式。
這段代碼編寫得很好,很明顯一個匿名函數被傳遞給另一個函數。根本沒有任何意圖,但如果你沒有選擇那個,你是一個新手,樸。傳遞匿名函數幾乎是麪包和黃油Javascript。 –
我的問題是我找不到函數名('define')在哪裏。我更喜歡在我的代碼中進行大量的評論,如[this](http://easeljs.com/docs/DisplayObject.js.html)中的一段代碼。現在我不喜歡傲慢地捍衛自己的立場,但是當我聲稱這個文件過於複雜時,我覺得我是對的。例如,回調沒有在創建元素的index.html文件中指定,但在完全不同的文件中指定。這是什麼原因?追蹤非常困難。 – puk
它編碼不是很差。這是一個匿名函數被傳遞給函數functionName
。該函數將有一個名稱爲localName的名稱,並可在其中調用。這在很多情況下非常有用。
sort(my_arr, function(obj1, obj2){
return obj1.age*obj1.color - obj2.age*obj2.color;
}
);
function sort(arr, compare){
// Sorts arr of objects using compare(arr[i], arr[j]);
}
這將允許你實現單一排序功能sort
這對於所有可能的對象,只要調用者提供對該類型對象的比較功能的工作原理。
(function(arg) {...}(value));
這不是一個函數調用。你的意思可能是(function(params) {...}(value))(someArgs);
。
functionName(function(params){...});
這就要發揮作用functionName
,傳遞一個匿名函數作爲參數調用。
這是(本質)一樣:
var f = function(params) { ... };
functionName(f);
或:
function f(params) { ... };
functionName(f);
考慮:
function functionName(f) {
f();
}
這...
現在被調用。
我想他實際上是指'(function(arg){...})(value);' – Paulpro
@PaulPRO:啊,是的,還是那個。 –
'define'是commonJS的一部分AMD – Raynos
@Raynos澄清。 –