Смотрите следующие сравнения:Сравнение строк с Javascript
("a" == "a")
true
(/a/ == /a/)
false
Почему я получаю разные результаты со следующими выражениями?
EDIT:
Теперь я использую только ==
и по-прежнему получать те же результаты.
Смотрите следующие сравнения:Сравнение строк с Javascript
("a" == "a")
true
(/a/ == /a/)
false
Почему я получаю разные результаты со следующими выражениями?
EDIT:
Теперь я использую только ==
и по-прежнему получать те же результаты.
undefined
, null
, Numbers
, Strings
литералов и Booleans
типы значений в JavaScript.
Таким образом, они будут сравниваться с их значения в отличии от RegExp
(или любого другого объекта в этом отношении), который является объектом, где сравнение происходит на основании ссылки. Так "a" == "a"
вернется true
, потому что значения являются же но /a/ == /a/
возвратит false
потому что ссылки отличаются.
Литерал /a/
не является строкой, это объект регулярного выражения. Нет двух объектов: ===
.
Два экземпляра объекта всегда! = Друг другу, даже если они одного типа и имеют все свои соответствующие свойства. – Igor
@ReginaFlats просто попробуйте 'typeof/a /', вы получите ответ. – Kai
Объектные экземпляры равны только в том случае, если они являются одним и тем же экземпляром. Вы можете сделать 'var a =/a /;', а затем 'a === a' или' a == a' истинны. – Thilo
Второй не соответствует строкам. Строковое совпадение будет ''/a/"=="/a/"' для этого. – Mritunjay