2011-09-14 55 views

回答

1

如果您使用var,則方法中定義的任何變量僅在該方法中可用。如果你

myVar = 1;

myVar的將是全球性的。

節點就像其他的JavaScript。節點不定義一個變量global,所以你可以做這樣的事情

global.SOME_CONSTANT = 'A Constant'

,然後用它像

SOME_CONSTANT

在你的代碼/模塊的任何地方。

因爲節點是異步的,所以最終定義了很多回調函數。即你做了很多的

someModule.someMethod(opts, function(data){ 
    // callback code in here 
}); 

,你在當它完成得到由someMethod調用傳遞的功能。假設你在一個函數中調用了someModule.someMethod。如果您在外部函數定義的變量,因此您的代碼看起來像

var x = []; 
someModule.someMethod(opts, function(data){ 
    // x is available in this callback because of closures, so you can do 
    x.push(data); 
}); 

在外部範圍定義的變量是因爲封閉的回調可用。我建議你花一些時間閱讀JavaScript中的閉包。

2

name變量只能在創建它的函數中使用,或者在函數中嵌套函數

無論函數通過何處,都是如此。它是原始可變環境隨它隨身攜帶,任何代碼外部該環境將無法訪問name

1

它只在模塊中可用,並且只在其定義的功能中可用。 沒有辦法來定義範圍。每個模塊都有其自己的全球範圍。

您應該閱讀關於關閉;)