В чем разница между == и === в 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. Положительные и отрицательные нули равны друг другу.
  • Два булевых операнда строго равны, если оба истинны или оба ложны.
  • Два объекта строго равны, если они ссылаются на один и тот же объект.
  • Нулевой и неопределенный типы: == (но не ===).

Ссылка

== просто сравнивает два значения, и, если они имеют разные типы, выполняется преобразование типов

=== сравнивает значения и их типы - поэтому здесь преобразование типов не выполняется.

Другие вопросы по тегам