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