我有以下功能:
$.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
如何重构它?
答案 0 :(得分:9)
使用renderTerminalOnMap
代替renderTerminalOnMap(data)
作为回调。
通过编写renderTerminalOnMap(data)
,您实际上立即使用data
参数调用该函数,该参数是undefined
变量,并将该函数的return value
设置为回调。
当您将函数作为回调传递时,您只需传递函数名称,参数将由getJSON
函数本身传输。
$.getJSON(
'getTerminalinsideCircle.json',
{
centerLatitude: adressMarker.getPosition().lat(),
centerLongitude: adressMarker.getPosition().lng(),
radius: radius / 1000
}, renderTerminalOnMap
);
function renderTerminalOnMap(data) {
$.each(data, function (key, val) {
...
}
)
}