Почему 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, тогда это будет верно