JavaScript中作为字符串的变量名

JavaScript中作为字符串的变量名,javascript,variables,variable-assignment,Javascript,Variables,Variable Assignment,有没有一种方法可以在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, "v

有没有一种方法可以在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();
这可能有用

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

upd当然,这有一些限制,例如不能有两个内容相同的变量,但这是我仍然找到的唯一方法。

除非在非常特殊的情况下,与调用函数仅调用一次
checkNumber
并使用一个变量作为参数一样,或者该值在您可以从该函数访问的某些对象中是唯一的一样,答案是“否”。为什么要这样做?在什么范围内声明了
var1
var2
?这个[variableName]怎么样?@san.chez-取决于范围,而这个
实际上是什么,这就是我问的原因?@PhilippeTrépanier:将它们都放在一个对象中,传递名称。或者,传递字段并创建
数据标签
属性或其他内容,然后选中
参数值
并使用
参数数据集标签
。(请注意,如果这是用户输入,您的
typeof
检查可能无法按预期执行…)我不会在全局范围内使用此选项,而是使用对象,谢谢+1和正确。