2017-01-02 2 views
0

Мне удалось сломать немного кода, добавив полуточку.Экстренное полуплоскости разрывает строковое равенство

Включает ли лишнюю точку с запятой код, игнорирующий оператор if ..., и запускает код, обычно приписываемый истине? Или что-то еще происходит под капотом, так сказать?

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

';' - это (пустой) блок кода, который выполняется, если 'if' является истинным. Остальная часть кода теперь работает всегда. –

+1

Это не «лишняя» точка с запятой - вы не должны размещать точку с запятой на любом языке, который использует точки с запятой в качестве терминаторов. – Damon

+0

это была опечатка :) –

ответ

0

В основном вы делаете If(condition) выполнить ;, которое равно ничего не делать. Затем он обычно выполняет код, то есть alert и break.

1

Полу-двоеточие представляет собой строку кода, которая должна быть выполнена при выполнении инструкции if. Следующий блок между {} выполняется без инструкции if.

0

Точка с запятой вводит пустой оператор, который станет телом if -statement, за которым следует безусловный блок. Письменное отступом по-другому, это

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; 
    } 
} 

, которая является такой же, как

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; 
} 

, учитывая, что блок не имеет никакого значения здесь.

Смежные вопросы