JavaScript中作为字符串的变量名
有没有一种方法可以在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
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和正确。