JavaScript тройное равенство и сравнение с тремя переменными
Может кто-нибудь объяснить это?
1 == 1 //true, as expected
1 === 1 //true, as expected
1 == 1 == 1 //true, as expected
1 == 1 == 2 //false, as expected
1 === 1 === 2 //false, as expected
1 === 1 === 1 //false? <--
Также есть имя для логической логики, которая сравнивает более двух чисел таким образом (я назвал это "сравнением с тремя переменными", но я думаю, что это было бы неправильно...)
2 ответа
Решение
Это выражение:
1 === 1 === 1
Оценивается как:
(1 === 1) === 1
После оценки выражения в скобках:
true === 1
И это выражение логически неверно. Выражение ниже возвращает true
как и ожидалось:
1 === 1 === true
Равенство - это приоритетная операция слева направо.
Так:
1 == 1 == 1
true == 1
true
А также:
1 === 1 === 1
true === 1
false // because triple-equals checks type as well