JavaScript方法开始w /变量分配?非常困惑

Mat*_*tyP 5 javascript ajax jquery highcharts

这是我的第一篇文章,但我很高兴加入这个社区.我有一个关于JavaScript的问题,我完全不知所措.

我正在编写一个JavaScript应用程序,它使用ajax从服务器提取数据并将其添加到图表中.我使用Jquery和Highcharts作为框架,然后在Highcharts周围编写我自己的JavaScript'包装器'来生成接口.

当使用jSON响应调用processData函数时,它以i = 1开头,即使我甚至不应该初始化甚至声明.还设置了其他变量.(我知道这可以通过使用chrome开发人员工具进行调试).这使我的循环不执行,我的数据都没有添加到图表中.

我不知道要显示多少代码,但这些是最相关的部分.如果需要,我可以添加更多.

function getData(series, min, max, numpts) {
        if (series === undefined) {
            console.log("error on getData");
            return;
        }

        var request = {};
        request.series = series;

        if (min !== undefined) {
            request.start = min;
        } //in seconds
        if (max !== undefined) {
            request.end = max;
        } 
        if (numpts !== undefined) {
            request.numpts = numpts;
        }
        $.getJSON('/data', request, processData);
        return;
    }

    function processData(data) {
        // handle the data after it comes back from an ajax request
        var curSeries,
            chartSeries,
            curPoint;

        for (var i = 0; i < data.length; i ++) {
            curSeries = data[i];
            chartSeries = chart.get(curSeries.name);

            if (chartSeries === null) {
                //alert("oops");
                chart.addSeries(curSeries);
            } else {
                for (var j = 0; j < curSeries.data.length; j ++) {
                    curPoint = curSeries.data[j];
                    chartSeries.addPoint(curPoint, false);
                }
            }
        }
        chart.redraw();
    }
Run Code Online (Sandbox Code Playgroud)

这些都是我声明为图形的类的方法.

谢谢,如果有人有任何想法!-Matt P.

war*_*gle 2

我会控制台检查您的数据对象,以确保它是您所期望的,因为即使i是预先声明的,该循环也应该正常工作:无论如何,您在循环开始时为其分配 0 。

能想到在定义和初始化 i 之前定义和初始化 i 的唯一原因是,如果代码库中的其他地方没有使用var关键字初始化i。这样做会将其转储到全局范围(窗口对象)中,从而通过闭包将其提供给代码库中的任何函数。

如果它不在您的某个文件中,则可能位于 highcharts 图形库中(在这种情况下,从所述库中运行得非常快)。