我在脚本的主根
中设置了变量var name="blah";
我需要在一个函数中引用它,而不是直接在它的参数中传递它。我可以使用“var”初始化程序在全局范围内设置变量,这对我的函数有效。但是,我仍然需要知道如何执行此操作。
在Flash(AS2 / AS3)中,它就像_root.myvar
或_parent.myvar
?
样品:
var name="blah";
var sex="m";
templateMe('name,sex'); // declared the actual NAME of the var not the var itself
然后.. templateMe函数只使用传入函数的“字符串”作为变量名及其对应的值
意味着'name'字符串变为
var name=eval(name)
这是函数的一部分:
vars_r = vars.split(",");
r_count = vars_r.length;
if(r_count < 1 ){
return template;
}
var i=0;
var needles = new Array();
var replacements = new Array();;
for(i=0; i < 2; i++){ //ti <-- use own i counter coz it conflicts w/ global i
needles.push("{{"+ vars_r[i] + "}}");
replacements.push( eval( vars_r[i]) );
}
等...
希望现在更有意义
答案 0 :(得分:0)
如果我理解你的问题,你根本不需要传递变量。
变量已经是全局的,所以你可以直接引用它们。
例如:
var value1 = "some value"; /* these variables are global, so you can refer to them from anywhere in your script */
var value2 = 25; /* ********************************************* */
someFunction();
someFunction看起来像这样:
function someFunction() {
var newValue = value2 + 3;
alert(newValue); /* Alerts 28. */
alert(value1); /* Alerts 'some value'. */
}
如果您需要一个学习JavaScript的地方,webplatform.org可能是a good place to start。
希望这有帮助!
答案 1 :(得分:0)
全局变量是window
对象的属性。因此,如果您需要在名为varname
的字符串变量中使用其名称时引用全局变量,则可以使用window[varname]
,如下所示:
var foo = 'bar';
var varname = 'foo';
console.log( window[varname] );
打印:
bar
斯蒂芬指出,有可能有更好的方法来解决整个问题,但如果你真的需要以这种方式访问全局变量,这种方法可以正常工作。
查看您的代码,我认为您将替换此行:
replacements.push( eval( vars_r[i]) );
使用:
replacements.push( window[ vars_r[i] ] );
虽然我不确定我理解这段代码在做什么。无论如何,window[varname]
比eval(varname)
好很多。