2

在开发 JavaScript 应用程序时,我在使用 Chrome 开发人员工具时遇到了一些意想不到的事情。我在一个函数中有以下代码块:

var b = bins + 1,
    selectValues = [],
    selectedPoints = [],
    n = numVals;

    while(b--){selectValues.push(0)};


    //Main selection iterator
    if (range_min == range_max){
        mainSVG.selectAll(".sim-ui-scatter-points")
            .each(function(){
                d3.select(this).call(addClass,["foo"]);
                d3.select(this).call(removeClass,["bar","foobar"])  
                });
        } else {
            do some other stuff
        });
    }

n计划为语句中的每个项目添加一些变量的功能.each,我使用 Chrome 调试器在语句中放置了一个断点,然后在浏览器在断点处暂停时在控制台中.each请求,然后返回. 但是,如果在我的代码中添加一个,如下所示:nReferenceError: n is not definedconsole.log(n)

    //Main selection iterator
    if (range_min == range_max){
        mainSVG.selectAll(".sim-ui-scatter-points")
            .each(function(){
                console.log(n)
                d3.select(this).call(addClass,["foo"]);
                d3.select(this).call(removeClass,["bar","foobar"])  
                });
        } else {
            do some other stuff
        });
    }

代码不仅可以正确返回n到控制台,而且我可以在 Chrome 调试器的控制台中请求,n在我之前使用的同一行上使用断点并获得正确的值而不是引用错误。为什么会这样?

4

0 回答 0