我想在JavaScript中传递一个变量的引用,并更新该变量的内容,这是否可行?例如,以下是一个简单(失败)的示例...
var globalVar = 2;
function storeThis ( target, value ) {
eval(target) = value;
}
storeThis( 'globalVar', 5);
alert('globalVar now equals ' + globalVar);
当然,这并不起作用,有人可以帮忙吗?
我想在JavaScript中传递一个变量的引用,并更新该变量的内容,这是否可行?例如,以下是一个简单(失败)的示例...
var globalVar = 2;
function storeThis ( target, value ) {
eval(target) = value;
}
storeThis( 'globalVar', 5);
alert('globalVar now equals ' + globalVar);
Eval不返回任何值。
这个可以正常工作:
window[target] = value;
storeThis
中的代码已经可以访问 globalVar
,因此无需将其传递进来。var globalVar = 2;
function storeThis(value) {
globalVar = value;
}
storeThis(5);
您想要做什么?
在Javascript中,标量不能通过引用传递。如果需要这样做,请使用Number
类型或创建自己的对象,例如:
var myObj = { foo: 2 };
function storeThis( target, value ) {
eval( target + ' = ' + value );
}
storeThis( 'globalVar', 5 );
alert('globalVar now equals ' + globalVar);
value
是一个字符串,eval()
将把它视为变量(如果它是一个单词),无效代码(如果它是多个javascript不理解的单词)或表达式(如果它是一个有效的javascript表达式)。 - Ryan Kinal
eval
呢?这绝对不是少数几种适合使用eval
的情况之一。 - jasongetsdown