В чем разница между == и === в JavaScript? Я также видел операторы != и !==. Есть ли еще такие операторы?
Ответ 1
=== и !== являются строгими операторами сравнения:
JavaScript имеет как строгое, так и типовое преобразование равенства. Для strict равенства сравниваемые объекты должны иметь один и тот же тип и:
Две строки строго равны, если они имеют одну и ту же последовательность символов, одну и ту же длину и одинаковые символы в соответствующих позициях.
Два числа строго равны, если они численно равны (имеют одинаковое числовое значение). NaN не равно никому, включая NaN. Положительные и отрицательные нули равны друг другу.
Два булевых операнда строго равны, если оба они истинны или оба ложны.
Два объекта строго равны, если они относятся к одному и тому же Object.
Null и Undefined типы == (но не ===). [Ie (Null==Undefined) true но (Null===Undefined) false ]
3 равных знака означают "равенство без принуждения типа". Используя тройное равенство, значения также должны быть равны по типу.
0 == false // true
0 === false // false, because they are of a different type
1 == "1" // true, automatic type conversion for value only
1 === "1" // false, because they are of a different type
null == undefined // true
null === undefined // false
'0' == false // true
'0' === false // false