--- title: if...else slug: Web/JavaScript/Reference/Statements/if...else tags: - Выражение - Условие translation_of: Web/JavaScript/Reference/Statements/if...else ---
Инструкция if выполняет инструкцию, если указанное условие выполняется (истинно). Если условие не выполняется (ложно), то может быть выполнена другая инструкция.
if (условие) инструкция1 [else инструкция2]
условие
инструкция1
"условиe"
истинно (true
). Может быть любой инструкцией в том числе и вложенным if
. Для группировки нескольких инструкций используется блок ({...}
), Когда никакого действия не требуется, может использоваться пустая инструкция.инструкция2
"условиe"
ложно (false
). Может быть любой инструкцией, в том числе и вложенным if
. Инструкции тоже можно группировать в блок.Несколько команд if ... else могут быть вложены для создания условия else if
. Обратите внимание, что в JavaScript нет ключевого слова elseif
(в одно слово).
if (условие1) инструкция1 else if (условие2) инструкция2 else if (условие3) инструкция3 ... else инструкцияN
Чтобы увидеть, как это работает, ниже представлен пример правильного вложения с отступами:
if (условие1) инструкция1 else if (условие2) инструкция2 else if (условие3) ...
Чтобы выполнить несколько инструкций в условии, используйте блочный оператор ({...}) для группирования этих инструкций. В общем, хорошей практикой всегда является использование блочных операторов, особенно в коде, включающем вложенные операторы if
:
if (условие) { инструкции1 } else { инструкции2 }
Не путайте примитивные логические значения true
и false
с правдивостью или ложностью булева объекта. Любое значение, которое не undefined
, null
, 0
, NaN
или пустая строка (""), и любой объект, включая объект Boolean, значение которого является ложным, считается правдивым при использовании в качестве условия. Например:
var b = new Boolean(false); if (b) // это условие истинно
if...else
if (cipher_char === from_char) { result = result + to_char; x++; } else { result = result + clear_char; }
else if
Обратите внимание, что в JavaScript нет синтаксиса elseif
. Однако вы можете записать его с пробелом между else
и if
:
if (x > 5) { } else if (x > 50) { } else { }
Целесообразно не использовать простые присваивания в условном выражении, потому что при взгляде на код присваивание можно путать с равенством. Например, не используйте следующий код:
if (x = y) { /* сделать что-то */ }
Если вам нужно использовать присваивание в условном выражении, обычной практикой является размещение дополнительных скобок вокруг присваивания. Например:
if ((x = y)) { /* сделать что-то */ }
Спецификация | Статус | Комментарий |
---|---|---|
{{SpecName('ESDraft', '#sec-if-statement', 'if statement')}} | {{Spec2('ESDraft')}} | |
{{SpecName('ES6', '#sec-if-statement', 'if statement')}} | {{Spec2('ES6')}} | |
{{SpecName('ES5.1', '#sec-12.5', 'if statement')}} | {{Spec2('ES5.1')}} | |
{{SpecName('ES3', '#sec-12.5', 'if statement')}} | {{Spec2('ES3')}} | |
{{SpecName('ES1', '#sec-12.5', 'if statement')}} | {{Spec2('ES1')}} | Начальное определение |
{{CompatibilityTable}}
Свойство | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Основная поддержка | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} |
Свойство | Android | Chrome for Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Основная поддержка | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} |