我需要将一个对象传递给另一个函数,但我在对象内部引用了全局变量的问题。
var a = 'first variable'; //SAMPLE GLOBAL VARIABLE
var b = 'second variable'; //SAMPLE GLOBAL VARIABLE
function iterator(options){
for(var c in options){
alert(c + ' ' + options[c]);
}
}
function main(){
iterator({
a:'5',
b:'6'
});
}
这些功能应提醒
下面的输出first variable 5
second variable 6
但相反,我正在
a 5
b 6
我需要在对象中使用变量。
答案 0 :(得分:2)
函数中的a
是for
循环中声明的局部变量。
var a = 'first variable'; //SAMPLE GLOBAL VARIABLE
var b = 'second variable'; //SAMPLE GLOBAL VARIABLE
var opts = {a: a, b: b};
function iterator(options){
for(var a in options){
alert(opts.a + ' ' + options[a]);
}
}
答案 1 :(得分:2)
根据您的第I need to use variables inside the object
行,我建议您重写main
,如下所示:
function main(){
var obj = {}
obj[a] = '5';
obj[b] = '6';
iterator(obj);
}
因为a
内部for-in
循环将在循环中创建新变量并引用对象的每个键
答案 2 :(得分:1)
a&您尝试访问的b绑定到Window对象。
当你打印'a'或'b'时,它是从你JSON的Key / Value打印键'a'。
$(window).load(function() {
main();
});
和
function iterator(options){
for(var a in options){
alert(window[a] + ' ' + options[a]);
}
}
答案 3 :(得分:1)
根据编辑,OP现在改变了变量名,所以现在可以直接访问变量a
function iterator(options){
for(var c in options){
alert(a + ' ' + options[c]);
}
}
以下是Fiddle
答案 4 :(得分:0)
这里的var a
专门用于创建一个 new 变量,其功能范围会影响全局变量:
function iterator(options){
for(var a in options){
alert(a + ' ' + options[a]);
}
}
如果您仍想访问全局...
,则无法执行此操作