Разница между == и === в JavaScript
Возможный дубликат:
Javascript === vs ==: Имеет ли значение, какой оператор "равно" я использую?
В чем разница между ==
а также ===
в JavaScript? Я также видел !=
а также !==
операторы. Есть ли еще такие операторы?
2 ответа
Решение
===
а также !==
Строгие операторы сравнения:
JavaScript имеет как строгое сравнение, так и сравнение равенства типов. За
strict
Равенство сравниваемых объектов должно иметь одинаковый тип и:
- Две строки строго равны, если они имеют одинаковую последовательность символов, одинаковую длину и одинаковые символы в соответствующих позициях.
- Два числа строго равны, когда они численно равны (имеют одинаковое числовое значение).
NaN
не равно ни к чему, в том числеNaN
, Положительные и отрицательные нули равны друг другу.- Два булевых операнда строго равны, если оба истинны или оба ложны.
- Два объекта строго равны, если они относятся к одному
Object
,Null
а такжеUndefined
типы==
(но нет===
). [Т.е.Null==Undefined
) являетсяtrue
но (Null===Undefined
) являетсяfalse
]
Посмотрите здесь: http://longgoldenears.blogspot.com/2007/09/triple-equals-in-javascript.html
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