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
Другие вопросы по тегам