В чем разница между == и === в JavaScript?
Возможный дубликат:
Javascript === vs ==: Имеет ли значение, какой оператор "равно" я использую?
Когда JavaScript == имеет больше смысла, чем ===?
В чем разница между приведенными ниже методами при сравнении строки с неопределенным значением.
var x;
if(x==undefined)
{
alert(x);
}
а также
if(x===undefined)
{
alert(x);
}
Почему я должен предпочесть второй метод в этом случае.. Пожалуйста, дайте мне знать преимущества..
4 ответа
==
пытается преобразовать значения в один и тот же тип перед проверкой, если они одинаковы."5" == 5
===
не делает этого; это требует, чтобы объекты были одного типа, чтобы быть равными."5" !== 5
В этом случае результат:
x == undefined
будет правдой, еслиx
являетсяundefined
или жеnull
,x === undefined
будет только еслиx
являетсяundefined
,
Вы должны предпочесть первый метод, если хотите, чтобы значения undefined и null рассматривались одинаково. Одно из распространенных применений этого - необязательные аргументы функции.
function greet(name, greeting) {
if (name == undefined) name = 'World';
if (greeting == undefined) greeting = 'Hello';
alert(greeting + ' ' + name);
}
greet(); // alerts "Hello World"
greet("Bob"); // alerts "Hello Bob"
greet(null, "Goodbye"); // alerts "Goodbye World"
Предположим, у нас есть х = 5,
== равно
x==8 неверно x==5 верно
=== точно равно (значение и тип)
x === 5 верно x==="5" неверно
Надеюсь, вы понимаете эту концепцию
===
проверяет на тот же тип, а также. Вы поймете с несколькими примерами:
(1 == '1') //Returns true
поскольку ==
не заботится о типах, это возвращает true. Однако, если вы хотите строгой проверки типов, вы бы использовали ===
потому что это возвращает true, только если оно того же типа, и имеет то же значение.
(1 === '1') //Returns false
(1 === 1) //Returns true
- Две строки строго равны, если они имеют одинаковую последовательность символов, одинаковую длину и одинаковые символы в соответствующих
позиции.- Два числа строго равны, когда они численно равны (имеют одинаковое числовое значение). NaN не равен ничему,
в том числе NaN. Положительные и отрицательные нули равны друг другу.- Два булевых операнда строго равны, если оба истинны или оба ложны.
- Два объекта строго равны, если они ссылаются на один и тот же объект.
- Нулевой и неопределенный типы: == (но не ===).
== просто сравнивает два значения, и, если они имеют разные типы, выполняется преобразование типов
=== сравнивает значения и их типы - поэтому здесь преобразование типов не выполняется.