我學習JS,我想知道是否有保護比其他全球範圍內的這兩種方式之間的任何(有用的)差異事實上第二個可以重用(再次調用)。
選項1:
var question = {};
(function(){
question.option1 = function() {
// some code
};
})();
選項2:
var question = {};
question.option2 = function() {
//some code
};
question.option();
的感謝!
編輯1:
謝謝@luisperezphd。你寫的和這個(除了冗長)之間有什麼區別嗎?
var question = {};
question.option3 = {};
question.option3.privateVar = 0;
question.option3.testing = function() {
question.option3.privateVar++;
// some code
};
question.option3.testing();
編輯2:
謝謝lanston和luisperezphd!我沒有意識到這個問題.option3.privateVar在全球範圍內可用。
有此之間的任何差別:與
var question = {};
(function(){
var privateVar = "some value";
question.option4 = function(){
alert(privateVar);
}
})();
question.option4();
這樣的:
var question = {};
question.option5 = function() {
var privateVar = "some value";
var someFunction = function() {
alert(privateVar);
}
return someFunction;
}
question.option5()();
?
他們的行爲是一樣的,我相信第二個被稱爲封閉。但是在這兩種情況下,privateVar都不能在函數之外訪問。 – 2012-01-10 05:43:44