javascript - 为什么没有定义变量?

标签 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

如何正确重构呢?

最佳答案

使用 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/

相关文章:

javascript - md-tab 中 Angular-Datatables 的滚动功能

javascript - 没有绝对值的弹出按钮

javascript - 是否可以删除具有该 div id 上的事件的元素的 div id?

javascript - 添加 jquery 附加链接

javascript - 上传前如何调整图片大小

javascript - 数组已排序,但 React 未按排序顺序渲染

javascript - SmoothStateJS : how to keep an element from refreshing on page change?

javascript - Basic Angular - 如何将 json http 响应加载到另一个 json 对象中

javascript - 无法从 phantomjs 打开 behance.net

javascript - 如何在单击按钮时显示下一篇文章