2013-06-28 210 views
0

有沒有辦法在JavaScript中檢索變量的名稱而不將它作爲對象的一部分?下面是我想要達到一個例子:JavaScript中的字符串變量名稱

var obj = {//Declared in a global scope 
    init:function(){ 
     var var1 = /*value from input*/; 
     var var2 = /*value from input*/; 

     doCode({name:/*variable name as a string, "var1"*/,val:var1}); 
     doCode({name:/*variable name as a string, "var2"*/,val:var2}); 
     function checkNumber(args){ 
      if(typeof args.val != 'number') 
       console.error("Error variable '"+arg.name+"' is not a number!"); 
      else 
       console.log("Variable '"+arg.name+"' is a number!"); 
     } 
    } 
} 
obj.init(); 
+0

除非是非常特殊的情況,例如調用函數只用一個變量作爲參數調用'checkNumber',或者該值在您可以從函數訪問的某個對象中唯一時,答案爲「否」。你爲什麼想這樣做? – Ryan

+0

聲明瞭「var1」和「var2」的範圍? – adeneo

+0

這個[variableName]怎麼樣? –

回答

1

這可能會實現

var foo = 'bar' 
var fooname 
for (var i in window) { 
    if (window[i] == foo) fooname = i 
} 
alert(fooname) // alerts 'foo' 

UPD當然,也有一些限制,例如,你不能有兩個變量相同的內容,但這是我仍然找到的唯一途徑。

+0

我不會在全局範圍內使用它,而是使用一個對象,謝謝! +1並且正確。 – PhilTrep