2016-03-13 47 views
-1

如何從一個函數訪問全局變量時的名稱是相同的Node.js參數名稱?當名稱與Node.js中的參數名稱相同時,如何從函數中訪問全局變量?

var name = null; 

function func(name) { 
    // How to set the global variable with the passed value 
} 
+1

唐毫不掩飾在本地範圍的全局... –

+1

20分鐘前,我回答了瀏覽器和node.js的這個問題,但你接受了另一個答案只適用於瀏覽器... http://stackoverflow.com/a/35976071/ 3173842 – user3173842

+0

的可能的複製[如何從一個函數訪問全局變量時的名稱是相同的JavaScript參數名稱?](http://stackoverflow.com/questions/35976005/how-to-access-global-variable-from -a-功能時最名稱是-相同-AS-參數) –

回答

2

假設你正在談論的是一個Node.js的模塊,你的第一個name變量實際上不是全球性 - 它只是在模塊(模塊級別定義)較高的範圍。因此,無法在Javascript中使用具有相同名稱的參數的函數訪問它。

你將不得不爲了能夠訪問這兩個改變一個名稱或其他兩個衝突的名字。

var name = null; 

// change the name of the argument 
function func(aname) { 
    name = aname; 
} 

func("Bob"); 
console.log(name); // "Bob" 

如果它實際上是在node.js的一個全球性的,那麼你可以用global前綴訪問它在:

global.name = "Bob"; 

function func(name) { 
    global.name = name; 
} 

function("Alice); 
console.log(global.name); // "Alice" 

僅供參考,一般我會留遠離全局變量名爲name。如果這是瀏覽器代碼,那麼已經存在衝突的window.name

這裏有一個little primer on actual using global variables in node.js(一般不推薦)。在node.js中推薦共享導出的屬性/變量/方法。

相關問題