2017-01-02 8 views
0

Ich schaffte es, ein bisschen Code zu brechen, indem ich einen Semikolon hinzufügte.Extra Semikolon bricht Stringgleichheit

Enthält der Einschluss eines überflüssigen Semikolons, dass der Code die if ... -Anweisung ignoriert und den Code ausführt, der normalerweise der Wahrheit zugeordnet ist? Oder passiert unter der Haube sozusagen noch etwas?

var str = "NEWS"; 
var d = "W"; 

for (var i = 0; i < str.length; i++) 
{ 
    if (str[i] === d); // extra semi colon 
    { 
    alert("!" + str[i]); 
    break; 
    } 
} 
+2

Das ';' ist der (leere) Codeblock, der ausgeführt wird, wenn 'if' wahr ist. Der Rest des Codes läuft jetzt immer. –

+1

Es ist kein "überflüssiges" Semikolon - Sie sollten niemals ein Semikolon in einer Sprache einfügen, die Semikolons als Terminatoren verwendet. – Damon

+0

war es ein Tippfehler :) –

Antwort

0

Grundsätzlich Sie tun If(condition); ausführen, die nichts ist gleich tun. Dann führt er normalerweise den Code aus, also alert und break.

1

Das Semikolon steht für die Codezeile, die ausgeführt wird, wenn die if-Anweisung übergeben wird. Der folgende Block zwischen {} wird unter if Anweisung ausgeführt.

0

Das Semikolon führt eine leere Anweisung ein, die zum Körper der if -Statement wird, gefolgt von dem unbedingten Block. Geschrieben unterschiedlich gegliedert, dann ist es

var str = "NEWS"; 
var d = "W"; 
for (var i = 0; i < str.length; i++) { 
    if (str[i] === d) 
     ; // extra semi colon 
    { 
     alert("!" + str[i]); 
     break; 
    } 
} 

, die die gleiche ist wie

var str = "NEWS"; 
var d = "W"; 
for (var i = 0; i < str.length; i++) { 
    if (str[i] === d) { 
     ; // extra semi colon 
    } 
    alert("!" + str[i]); 
    break; 
} 

gegeben, dass der Block keinen Unterschied hier nicht machen.