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
ステートメント内の各アイテムで発生する変数を使用して機能を追加することを計画し、Chromeデバッガーを使用し.each
てステートメント内にブレークポイントを設定し、ブラウザーがブレークポイントで一時停止している間にコンソールで要求し、戻ってきました。ただし、次のように、コードにを追加する場合:.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
コードがコンソールに正しく戻るだけでなくn
、Chromeデバッガーのコンソールで、以前使用していたのと同じ行のブレークポイントを使用して要求し、参照エラーの代わりに正しい値を取得できます。なぜこれが起こるのですか?