Почему 1 === 1 === 1 false?
В консоли браузера ввод 1===1
оценивается как true
. Ввод 1===1===1
соответствует false
.
Я предполагаю, что это связано с тем, как оценивается оператор:
1 === 1 === 1
становится
(1 === 1) === 1
который оценивается как
true === 1
который равен false
.
Это правильно? Если нет, то какова реальная причина такого поведения?
Ответы
Ответ 1
Да, ты совершенно прав. Здесь у вас есть две проверки равенства, которые имеют одинаковый приоритет оператора. Сначала оценивается сначала, тогда его результат применяется к следующей проверке равенства.
1===1===1
совпадает с (1===1)===1
, который true===1
, который равен false
, потому что здесь вы проверяете значениями и их типами. 1==1==1
приведет к true
, потому что он проверяет равенство только на значения, поэтому 1==1==1
равно (1==1)==1
, равному true==1
, равному true
.
Ответ 2
Оператор ===
не просто проверяет равенство, но также устанавливает равенство. Поскольку целое число не является логическим, true === 1
является ложным.
Для сравнения:
true == 1; // true
true === 1; // false
Пример.
Ответ 3
правильное поведение.
Его потому, что === подразумевает сопоставление по типу и значению.
true === 1 не соответствует типу
Ответ 4
Правильное поведение. Так как
1===1 // value is true
но
true===1 // it false
Для этого есть две причины:
- true - это булев тип, где 1 - целое число
- просто, 1 не равно true.
так
1===1===1 // false
Ответ 5
если 1 == 1 == 1, тогда это будет верно