2013-04-01 31 views
3

我在node.js中執行JavaScript文件,我需要訪問在該文件中創建的所有變量。由於這些javascript文件可以容納任何東西,這取決於開發人員的環境,所以我需要以編程方式訪問變量。如何獲取在函數內創建的變量?

我的問題是:如何獲得在函數內創建的變量?類似這樣的:

function test(){ 
    var a = 'hello world'; 
    var b = 100; 
} 

console.log(test.variables); 
// -> { "a": 'hello world', "b": 100 } 

這是可能以某種方式?

+1

的目的是什麼? – ValeriiVasin

+0

我在node.js中執行JavaScript文件,我需要訪問在該文件中創建的所有變量。由於這些javascript文件可以容納任何東西,這取決於開發人員的環境,所以我需要以編程方式訪問變量。 – Adam

回答

0

這是可能以某種方式?

否 - 不是不改變功能。

+0

你是什麼意思通過改變功能? – Adam

+0

我的意思是字面上改變函數的源代碼,以便它做一些不同的事情。例如,甜化酶的答案表明了一個可行的變化。 –

+0

你會做什麼改變? – Adam

4

不,您需要在對象中返回這些值。

function test(){ 
    var a = 'hello world', 
     b = 100; 
    return { 
     a: a, 
     b: b 
    }; 
} 

console.log(test); // { "a": 'hello world', "b": 100 } 

或者你可以將這些值保存到一個真實存在的功能範圍之外的變量:

var variables = null; 
function test(){ 
    var a = 'hello world', 
     b = 100; 
    variables = { 
     a: a, 
     b: b 
    }; 
} 
console.log(variables); // { "a": 'hello world', "b": 100 } 
+0

如果我不知道變量名稱的名稱會怎麼樣?有沒有辦法從函數內編程獲取變量名? – Adam

+0

@Adam不可能。你必須明確地分配你想要的變量。無論哪種方式,您將不得不修改該功能。 – sweetamylase

+0

它實際上可以使用node.js的'eval'和'vm'模塊,但eval的問題在於它從全局上下文中獲取所有內容,但我只需要本地上下文。與vm的問題幾乎相同。 – Adam

相關問題