Почему я не должен объявлять значение в моих логических выражениях if? - PullRequest
0 голосов
/ 07 февраля 2020

Вот простой код:

var x = 4;

if (x) {
alert("true");
} else {
  alert("false");
}

Знает ли JavaScript автоматически, что первое предупреждение - когда x == 4, а второе - когда x != 4? Почему я не должен объявлять if (x == 4) в своем операторе if?

Ответы [ 4 ]

0 голосов
/ 07 февраля 2020

Поскольку JavaScript является языком с динамической типизацией, это означает, что вам не нужно указывать тип для объявления переменной, во время определенного сценария ios (такого как тот, который вы указали), он должен автоматически обнаруживать введите и приведите / преобразуйте его в соответствующий тип, если это необходимо, в методике, известной как coercion .

В вашем сценарии JavaScript ожидает логическое значение в качестве аргумента оператора if но то, что предоставляется, это скорее число. Таким образом, в этом случае JavaScript пытается привести это целочисленное значение к логическому значению. Стратегия, используемая JavaScript для приведения чисел к целым числам, следующая:

Если число равно 0, JavaScript приводит его к ложному значению, тогда как для любого другого числа оно приводится к истинному .

Для строк:
, если строка является пустой строкой (""), она приводится к значению false, тогда как для любого другого непустого значения строки она приводится в true.

Значения, приведенные к false, называются ложными значениями , а значения, приведенные к true, обозначаются истинными значениями .

Надеюсь, это поможет. Для дальнейших чтений проверьте это

0 голосов
/ 07 февраля 2020

Здесь вы проверяете, что х правдив. Это означает, что оно имеет значение, отличное от 0.

Противоположность истины называется ложью. if (! x) вернет true, если x равно false, 0, "", null, undefined или NaN

0 голосов
/ 07 февраля 2020

На самом деле, я думаю, вам нужно больше узнать о принуждении типа . В JavaScript иногда некоторые типы меняют свою природу. В вашем примере тип number изменяется на boolean, поэтому if принимает его и выдает первое предупреждение.

0 голосов
/ 07 февраля 2020

Подобным образом вы проверяете, имеет ли (x значение, отличное от 0, ноль или не определено , что является true),

, но если вы хотите проверить изменение x to 5 и измените ваше состояние на x === 4,

, и вы попадете в секцию else.

var x = 4;

if (x === 5) {
  alert("true");
} else {
  alert("false");
}
...