对象中的Javascript变量

时间:2014-01-13 06:56:38

标签: javascript object

我需要将一个对象传递给另一个函数,但我在对象内部引用了全局变量的问题。

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

我需要在对象中使用变量。

5 个答案:

答案 0 :(得分:2)

函数中的afor循环中声明的局部变量。

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]);    
   }
}

Fiddle

答案 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]);    
   }
}

如果您仍想访问全局...

,则无法执行此操作