Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对象中的Javascript变量_Javascript_Object - Fatal编程技术网

对象中的Javascript变量

对象中的Javascript变量,javascript,object,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 mai

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

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

我需要在对象内部使用变量。

此处的
var a
专门用于创建一个新变量,该变量的函数范围覆盖全局变量:

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'
   });
}
function iterator(options){
   for(var a in options){
    alert(a + ' ' + options[a]);    
   }
}

您不能这样做,如果您仍然想访问全局…

这里的
var a
专门用于创建一个新变量,其函数范围会覆盖全局变量:

function iterator(options){
   for(var a in options){
    alert(a + ' ' + options[a]);    
   }
}

如果仍要访问全局…

函数中的
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]);    
   }
}

函数中的
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]);    
   }
}

根据您的行
我需要在对象中使用变量
,我建议您重写
main
,如下所示:

function main(){
   var obj = {}
   obj[a] = '5';
   obj[b] = '6';   
   iterator(obj);
}

由于,
a
inside
for in
循环将在循环内部创建新变量,并根据您的行
引用对象的每个键,我需要使用对象内部的变量
,因此我建议您重写
main
,如下所示:

function main(){
   var obj = {}
   obj[a] = '5';
   obj[b] = '6';   
   iterator(obj);
}

因为,
a
inside
for in
循环将在循环内部创建新变量,并引用对象的每个键

您尝试访问的a&b与窗口对象绑定

当您以其他方式打印“a”或“b”时,它是从您的JSON的键/值打印键“a”

$(window).load(function() {
main();
});
以及


您试图访问的a&b被绑定到窗口对象

当您以其他方式打印“a”或“b”时,它是从您的JSON的键/值打印键“a”

$(window).load(function() {
main();
});
以及


根据编辑,OP现在更改了变量名称,因此现在可以直接访问变量a

function iterator(options){
 for(var c in options){
     alert(a + ' ' + options[c]);    
 }
}

下面是

根据编辑,OP现在更改了变量名,因此现在可以直接访问变量a

function iterator(options){
 for(var c in options){
     alert(a + ' ' + options[c]);    
 }
}


这是一个

不要使用与全局变量同名的局部变量。看起来你在找麻烦,有很多变量名称可以使用。是的,更新了,但仍然没有work@Kiel现在检查我的答案<代码>警报(a+“”+选项[c])可能的重复项不要使用与全局变量同名的局部变量。看起来您在寻找问题,有很多变量名称可以使用。是的,已更新,但仍然没有work@Kiel现在检查我的答案<代码>警报(a+“”+选项[c])
sorry的可能重复项,但全局变量opts不能是全局的,因为我会将对象传递到javascript库。对不起,如果我没有提到我认为这不是一个因素。不起作用。对不起。这两个函数实际上被分成两个javascript文件。为了从另一个javascript文件访问全局变量opts,代码中会有很多更改。但是,如果我只有一个文件,这就行了。@ling.s很抱歉,请看我对您的答案的评论,谢谢。很抱歉,全局变量opts不能是全局变量,因为我会将对象传递到javascript库。对不起,如果我没有提到我认为这不是一个因素。不起作用。对不起。这两个函数实际上被分成两个javascript文件。为了从另一个javascript文件访问全局变量opts,代码中会有很多更改。但是如果我只有一个文件,这就行了。@ling.s很抱歉,请看我对您的答案的评论,谢谢您
window[a]
是未定义的。您是否定义了var a='first variable';喜欢这个例子吗?这应该行得通,我已经自己测试过了。在window加载之后再这样做,否则在脚本实际执行之前变量可能没有定义。您使用的是
$(window).load(function(){main();}),但您在回答中没有提到这一点。您还可以在回答
窗口中链接小提琴[a]
未定义var a='first variable';喜欢这个例子吗?这应该行得通,我已经自己测试过了。在window加载之后再这样做,否则在脚本实际执行之前变量可能没有定义。您使用的是
$(window).load(function(){main();}),但您在回答中没有提到这一点。此外,你还可以在回答中链接小提琴。这与一个js文件一起工作。我需要一个单独的文件中的main函数,这就是为什么我不能访问全局变量a。我只是在这里简化了js,但是
函数迭代器
所在的js文件实际上是在一个js库中,我可以从主javascript访问该js库。如果我没有提到js库,谢谢,很抱歉。这适用于一个js文件。我需要一个单独的文件中的main函数,这就是为什么我不能访问全局变量a。我只是在这里简化了js,但是
函数迭代器
所在的js文件实际上位于一个js库中,我可以从主javascript访问该js库。如果我没有提到js库,我表示感谢和抱歉。谢谢。我可能需要修改很多代码。对于上面的问题,这里是@ling的单个js的答案。s@Kiel:如果在循环中使用不同的变量名:),则不会引发此stackoverflow。从那时起,你就可以在那里得到你想要的东西无论如何,干杯!!!这个很好用,谢谢。我可能需要修改很多代码。对于上面的问题,这里是@ling的单个js的答案。s@Kiel:如果在循环中使用不同的变量名:),则不会引发此stackoverflow。从那时起,你就可以在那里得到你想要的东西无论如何,干杯!!!