在下面的代码中,我想使用markers
变量,我期望它是一个对象数组(例如[{...},{...},{...}]
)。但是,根据缩进级别,变量显示一个empy数组(即[]
)。
jQuery ->
markers = []
$.getJSON '/users.json', (data) ->
for obj in data
marker = {}
marker =
lastname: namify(obj.name)
address: obj.address
markers.push(marker)
console.log("3rd level", markers) # It shows the array I want.
console.log("2nd level", markers) # "markers" shows an empty array.
我的期望 - 第二级填充的数组。 结果 - 第二级中的空数组。
当我处于第二级时,如何在第3级中显示数组。
答案 0 :(得分:4)
您正在回调函数中填充数组。所以在打印结果后会填充它。问题不在于范围,而在于执行的顺序。
如果你发出同步请求,你应该看到你的期望:
jQuery ->
markers = []
$.ajax
url: '/users.json'
dataType: 'json'
async: false
success: (data) ->
for obj in data
marker = {}
marker =
lastname: namify(obj.name)
address: obj.address
markers.push(marker)
console.log("3rd level", markers)
console.log("2nd level", markers)