我有以下功能:
$.getJSON(
'getTerminalinsideCircle.json',
{
centerLatitude: adressMarker.getPosition().lat(),
centerLongitude:adressMarker.getPosition().lng(),
radius :radius/1000
}, function (data) {
$.each(data, function (key, val) {
....
}
)
}
)
我想重构它并重写它:
$.getJSON(
'getTerminalinsideCircle.json',
{
centerLatitude: adressMarker.getPosition().lat(),
centerLongitude: adressMarker.getPosition().lng(),
radius: radius / 1000
}, renderTerminalOnMap(data)
)
function renderTerminalOnMap(data) {
$.each(data, function (key, val) {
...
}
)
}
但在控制台中我看到 Uncaught ReferenceError: data is not defined
如何正确重构呢?
最佳答案
使用 renderTerminalOnMap
而不是 renderTerminalOnMap(data)
作为回调。
通过编写 renderTerminalOnMap(data)
,您实际上立即调用带有 data
参数的函数,这是一个 undefined
变量,并设置该函数的返回值
作为回调。
当您将函数作为回调传递时,您只需传递函数名称,参数将由 getJSON
函数本身传输。
$.getJSON(
'getTerminalinsideCircle.json',
{
centerLatitude: adressMarker.getPosition().lat(),
centerLongitude: adressMarker.getPosition().lng(),
radius: radius / 1000
}, renderTerminalOnMap
);
function renderTerminalOnMap(data) {
$.each(data, function (key, val) {
...
}
)
}
关于javascript - 为什么没有定义变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26316328/