在使用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
,在我之前使用的同一行上使用断点获取正确的值而不是引用错误。为什么会这样?