如果我在傳遞的函數中定義了某些內容,例如在Javascript中(當使用node.js時),你如何知道/定義變量的範圍?
var name = "Whatever";
這是現在從應用程序的其他部分訪問,或者是有限的?在node.js javascript中定義範圍的邏輯是什麼?
如果我在傳遞的函數中定義了某些內容,例如在Javascript中(當使用node.js時),你如何知道/定義變量的範圍?
var name = "Whatever";
這是現在從應用程序的其他部分訪問,或者是有限的?在node.js javascript中定義範圍的邏輯是什麼?
如果您使用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中的閉包。
name
變量只能在創建它的函數中使用,或者在函數中嵌套函數。
無論函數通過何處,都是如此。它是原始可變環境隨它隨身攜帶,任何代碼外部該環境將無法訪問name
。
它只在模塊中可用,並且只在其定義的功能中可用。 沒有辦法來定義範圍。每個模塊都有其自己的全球範圍。
您應該閱讀關於關閉;)