Сокращенные операторы if и их прямые эквиваленты в JavaScript - PullRequest
1 голос
/ 15 марта 2020

Я изучаю JavaScript в течение пары месяцев, и у меня есть несколько вопросов.

Скажем, у нас есть несколько утверждений типа if:

if (something)

if (!something)

Из того, что у меня есть Посмотрев вверх, первое утверждение проверяет, оценивается ли something как true, а второе проверяет, не является ли условие true (я помню, что чтение ! приводит его к логическому, а затем «инвертирует» его) .

Однако я хотел бы знать, каковы прямые эквиваленты этих утверждений, если они не «сокращены». Я хотел бы понять код, подобный этому, более подробно, прежде чем действительно его использовать.

Является ли if (something) таким же, как if (something == true)? Или даже if (something === true)?

А что было бы "не сокращенным" (из-за отсутствия лучшего термина) прямым эквивалентом if (!something)?

Спасибо за любую помощь.

1 Ответ

3 голосов
/ 15 марта 2020

Часть 1:

Когда мы используем if(something) javascript, проверим, является ли это значением "Истина" или "Ложь".

Так что если мы говорим

if(1) {
    alert("Yes, it's true...");
}

javscript проверит, является ли 1 истинным значением, и это так. Все, что не является ложным значением, является правдивым по расширению.

Ложные значения: 0, 0n, null, undefined, false, NaN и пустая строка «». Поэтому, если мы напрямую поместим любое из вышеперечисленного в круглые скобки, оно вернет false.

например, if (null) ... предложение if не будет выполнено, потому что null является ложным. 2:

Когда мы используем if(something == true), мы проверяем, равно ли одно значение другому. Если типы не совпадают, так как мы используем ==, произойдет принуждение.

Что это за «принуждение»? Если мы скажем if('1' == 1), то будет выполнено условие if, поскольку оно возвращает true. Javascript преобразует 1 (число) в '1' (строку) в этом случае.

Если мы хотим быть строгими и сказать: «Я хочу только true, если они оба числа, я не все равно, если 1 - строка ", тогда мы используем if(1 === '1'), и это не будет выполнять условие if (потому что условие возвращает false).

Так что, если мы скажем if(false == false), это вернет true, потому что false равно в false, и условие if будет выполнено.

Обратите внимание на разницу, если мы сказали if(false) или if(''), если оператор if не будет выполнен.

Далее, если мы хотим использовать отрицание, мы должны поставить! перед логическим значением мы отрицаем, независимо от того, является ли оно частью условия if или ... Нет никакого способа обойти это.

Однако, есть более короткая версия этого:

var a = 3;
var b = 2;

if(a===b) {
    alert('A is equal to B');
} else {
    alert('B is not equal to A');
}

Это считается короче (троичный оператор): обратите внимание, что если мы хотим использовать более одного оператора, мы должны использовать if else

a = 3;
b = 2;

a===b ? alert('A is equal to B') : alert('B is not equal to A');
...