为什么没有定义变量?

时间:2014-10-11 15:40:38

标签: javascript jquery

我有以下功能:

    $.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

如何重构它?

1 个答案:

答案 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) {
                       ...
                    }
            )
        }