在开发 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
请求,然后返回. 但是,如果在我的代码中添加一个,如下所示:n
ReferenceError: n is not defined
console.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
在我之前使用的同一行上使用断点并获得正确的值而不是引用错误。为什么会这样?