gpt4 book ai didi

javascript - JavaScript 变量的范围在此脚本中如何工作?

转载 作者:行者123 更新时间:2023-12-03 10:34:21 24 4
gpt4 key购买 nike

我有这段代码,但我无法理解为什么当我首先打印“globalData”时它会很好地打印所有值,但后来当我再次打印它时它只打印一个空数组?我是 JavaScript 和 jQuery 新手。

<script>
var globalData = [];

$( document ).ready(function() {

$.get( "http://....", function( data ) {

globalData.push(data[i]);
.
.
.

});
console.log(globalData); //["fg", "wedsd", "hjkyu"]
});

console.log(globalData); //[]

</script>

最佳答案

使用 $( document ).ready() 您只需定义一个匿名函数,该函数在文档结构成功构建后立即调用。然后打印此时为空的 globalData 。如果您定义的函数被调用,它会初始化 globalData 并且您会看到这些值。

总而言之,因为您定义的回调函数是异步调用的,并且定义本身不会阻塞并立即返回(即使 DOM 尚未加载),所以您在它之前打印 globalData在回调中填充值。

该问题甚至与使用 $.get 调用的 Ajax 请求无关,即使您在那里遇到类似的情况。但如果您只是在 ready 回调中填充数组,就会遇到同样的问题。

关于javascript - JavaScript 变量的范围在此脚本中如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29071825/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com