函数外部的Javascript变量
初学者试图将我的头脑集中在javascript和我遇到的范围问题上 我正在提取一些json数据并将其放入一个名为zero[]的数组中。。让它在匿名函数之外工作失败 如何使zero[]在函数外部工作函数外部的Javascript变量,javascript,variables,scope,Javascript,Variables,Scope,初学者试图将我的头脑集中在javascript和我遇到的范围问题上 我正在提取一些json数据并将其放入一个名为zero[]的数组中。。让它在匿名函数之外工作失败 如何使zero[]在函数外部工作 <script> var addr = "data657"; var zero = []; var full = []; $(function(){ jQuery.getJSON('https://jsondataurl.com/'+addr, function(res
<script>
var addr = "data657";
var zero = [];
var full = [];
$(function(){
jQuery.getJSON('https://jsondataurl.com/'+addr, function(result) {
if (result == 0)
zero.push(addr);
if (result > 0)
full.push(addr);
var j = Math.floor(Math.random()*4);
alert(zero[j]); /// works great here !!!
});
});
alert(zero[j]); // DOES NOT work here
$("#foo").attr("data-stuff", zero[j]); // DOES NOT work here
</script>
var addr=“data657”;
零风险值=[];
var full=[];
$(函数(){
jQuery.getJSON('https://jsondataurl.com/'+addr,函数(结果){
如果(结果==0)
零推力(addr);
如果(结果>0)
全推(addr);
var j=数学地板(数学随机()*4);
警惕(零[j]);///在这里非常有效!!!
});
});
警报(零[j]);//这里不行
$(“#foo”).attr(“数据素材”,zero[j])//这里不行
零
在范围内。变量还没有被填充<代码>j恰好不在范围内
您想对回调中的数据执行的任何操作都必须在回调中完成。嘿,它是外部的,而不是内部的任何函数,您不能像zero[j]那样使用,而是try zero[1]意味着您必须通过参考号警报(zero[0]);只需传递变量而不是reference@Quentin这里的问题不同。这个问题与Ajax调用无关。这不是一个重复的问题。@vivek_ganesan-是的,它是-
getJSON
进行Ajax调用。(第二个问题是,j
超出范围,但当代码被重写以说明异步时,它就会消失,因为该范围将不再使用)。@Quentin。。但问题的关键不在于Ajax调用。代码中的错误与变量作用域有关。不,请看问题“我如何才能使zero[]在函数外部工作?”-访问zero
没有范围问题,只是对Ajax引起的问题进行计时。嗯,我可以在函数外部定义j吗?就像我第一次在下面写“var zero=[];”