对象中的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
insidefor in
循环将在循环内部创建新变量,并根据您的行引用对象的每个键,我需要使用对象内部的变量,因此我建议您重写main
,如下所示:
function main(){
var obj = {}
obj[a] = '5';
obj[b] = '6';
iterator(obj);
}
因为,a
insidefor 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。从那时起,你就可以在那里得到你想要的东西无论如何,干杯!!!