【发布时间】:2013-06-26 07:31:05
【问题描述】:
有没有一种方法可以在 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();
【问题讨论】:
-
除非在非常特殊的情况下,例如当调用函数只调用一次
checkNumber时,使用一个变量作为其参数,或者该值在您可以从函数访问的某个对象中是唯一的,答案是“不”。为什么要这样做? -
var1和var2在什么范围内声明? -
这个[变量名]怎么样?
-
@san.chez - 取决于范围,
this到底是什么,这就是我问的原因? -
@PhilippeTrépanier:将它们全部保存在一个对象中,并传递名称。或者,传递字段并创建
data-label属性或其他内容,然后检查arg.value并使用arg.dataset.label。 (请注意,如果这是用户输入,您的typeof检查可能不会按预期执行......)
标签: javascript variables variable-assignment