2
在Module Pattern example from Addy Osmani,專用功能被分配給一個變量,如本例所示:爲什麼將函數分配給模塊模式中的變量?
var myNamespace = (function() {
var myPrivateVar, myPrivateMethod;
// A private counter variable
myPrivateVar = 0;
// A private function which logs any arguments
myPrivateMethod = function(foo) {
console.log(foo);
};
return {
// A public function utilizing privates
myPublicFunction: function(bar) {
// Increment our private counter
myPrivateVar++;
// Call our private method using bar
myPrivateMethod(bar);
}
};
})();
我會簡單地寫私有函數爲:
function myPrivateMethod(foo) {
console.log(foo);
};
是否有任何理由來分配如果函數沒有被用作委託,那麼該函數是一個變量?我正在看一些使用這種模式的代碼,並且我發現很難遵循。例如:
var _initializeContext = function() { // many lines of code }
[VAR functionName =函數(){} VS功能使用functionName(){}(http://stackoverflow.com/questions/336859/var-functionname-function-vs-function-functionname)可能能夠回答這個問題。這兩種形式之間的技術區別在於函數或者var是否被掛起。但是,已經處於範圍的頂端,它主要是一種文體選擇。 –
在這種情況下,編寫私有函數的兩種方式之間沒有顯着差異。這只是個人風格。我沒有看到你在「揭示模塊模式」一節中提到的語法,它來自模塊模式部分。 – Barmar
@Barmar你是對的,我編輯了標題。 –