Dies ist vielleicht ein Fehler oder es könnte nur sein, wie sie es entworfen haben. Dies scheint aber mit, wie die Debugger-Angebote zu tun mit if-Anweisung Bedingungen kann es leicht zu bewerten und den Code Styling verwendet (K & R, Allman, 1TBS, etc)
Codezeilen, die haben Haltepunkte, die auf sie gesetzt sind, sind grün schattiert, und solche, die nicht markiert werden können, werden vom Debugger grau schattiert.
Einfach gesagt, der Debugger hebt nicht hervor, ob Anweisungszeilen (und vielleicht sogar andere Anweisungszeilen), die er leicht mitteilen kann, eine Wahr/Falsch-Bedingung haben. Wenn Sie einen Haltepunkt setzen, wird der Haltepunkt stattdessen auf die nächste durchbrechbare Codezeile gesetzt.
Bei Blöcken, die 1TBS/OTBS- oder K & R-Formatierung verwenden, markiert der Debugger die erste brechbare Zeile innerhalb des if-Blocks anstelle der tatsächlichen if-Anweisungszeile. Dies gibt den falschen Eindruck, dass der Code in falscher Bedingung ist, wenn die Anweisungen als nächstes ausgeführt werden.
Bei Blöcken, die Allman-Formatierung verwenden, markiert der Debugger beim Durchlaufen keinen Teil der if-Anweisung oder des Codeblocks. Und wenn Sie versuchen, eine Codeunterbrechung auf die if-Anweisung zu setzen, wird der gesamte Block übersprungen und der Haltepunkt auf die nächste brechbare Zeile gesetzt.
Wenn die if-Anweisungen keine Bedingungen verwenden, die der Debugger ohne weiteres als wahr/falsch lesen kann, verhält sich der Debugger wie erwartet.
Demo testen
debugger;
var one = true;
var two = false;
//Allman Style
if(one)
{
console.log("Truth");
}
if(two)
{
console.log("false");
}
if(true)
{
console.log("Truth");
}
if(false)
{
console.log("false");
}
//1TBS/OTBS Style
if(one){
console.log("Truth");
}
if(two){
console.log("false");
}
if(true){
console.log("Truth");
}
if(false){
console.log("false");
}
ich Ihr Szenario in Firefox-Versionen 30, 33.1.1 und 36.0.4 getestet. Sie alle führen nur das erste "if" aus, genau wie Chrome. –
@crates_barrles Ich replizierte das Problem in Firefox 35. Chrome 40 war in Ordnung ... –
Es sieht nur so aus, als ob es ausgeführt wird, der Debugger hebt nur diese Zeile hervor, bevor es überspringt –