在Javascript中通过引用访问变量
我试图传递一个变量的引用,然后用javascript更新内容,这可能吗?例如,一个简单(失败)的例子是在Javascript中通过引用访问变量,javascript,Javascript,我试图传递一个变量的引用,然后用javascript更新内容,这可能吗?例如,一个简单(失败)的例子是 var globalVar = 2; function storeThis ( target, value ) { eval(target) = value; } storeThis( 'globalVar', 5); alert('globalVar now equals ' + globalVar); 这当然不行,有人能帮忙吗?Eval不返回值 这将有助于: window[t
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中不能通过引用传递标量。如果需要这样做,请使用或创建自己的对象,如:
var myObj = { foo: 2 };
如果确实要使用eval,可以使用以下命令:
var globalVar=2
function storeThis( target, value ) {
eval( target + ' = ' + value );
}
storeThis( 'globalVar', 5 );
alert('globalVar now equals ' + globalVar);
digitalfresh是正确的,eval用于对语句进行评估,因此您可能需要创建一个eval,例如eval(“窗口”。+target+”=“+value+”;”);但是要充满太多的递归。是的,但是为什么要eval
?这绝对不是少数适合eval
的情况之一。答对了!感谢LFI和DigitalFresh,这是一种享受。jasongetsdown还有更好的方式!在这种情况下,如果value
是一个字符串,则eval()
会将其视为变量(如果是一个单词)、无效代码(如果是多个javascript不理解的单词)或表达式(如果是有效的javascript表达式)。