Подтвердить что ты не робот

Когда JavaScript == будет иметь больше смысла, чем ===?

Как Какой оператор равен (== vs ===) должен использоваться в сравнении JavaScript? указывает, что они в основном идентичны, кроме '===' также обеспечивает тип равенство и, следовательно, "==" может выполнять преобразование типов. В Douglas Crockford JavaScript: "Хорошие детали", рекомендуется всегда избегать "==". Однако мне интересно, какова была первоначальная мысль о проектировании двух операторов равенства.

Вы видели какую-либо ситуацию, когда использование == 'более подходит, чем использование' === '?

4b9b3361

Ответ 1

Рассмотрим ситуацию, когда вы сравниваете числа или строки:

if (4 === 4)
{
  // true
}

но

if (4 == "4")
{
  // true
}

и

if (4 === "4")
{
  // false
}

Это относится как к объектам, так и к массивам.

Итак, в приведенных выше случаях вам нужно сделать правильный выбор: использовать == или ===

Ответ 2

Простой ответ заключается в том, что "==" имеет больше смысла, чем "===", когда вы хотите, чтобы во время сравнений выполнялось принуждение типа.

Хорошим примером могут служить числа, передаваемые в строке запроса URL. Если, например, у вас есть разбитый на страницы контент, а параметр запроса page содержит текущий номер страницы, вы можете проверить текущую страницу с if (page == 1) ..., хотя page на самом деле "1", а не 1.

Ответ 3

Я бы предположил, что нет проблемы с использованием ==, но чтобы понять, когда и зачем его использовать (т.е. использовать === как правило, и ==, когда он служит цели). По существу, == просто дает вам сокращенную нотацию - вместо того, чтобы делать что-то вроде

if (vble === 0 || vble === "" || vble === null || vble === undefined || vble === false) ...

Намного проще писать

if (vble == false) ...

(Или еще проще писать)

if (! vble)...

Конечно, есть больше примеров, чем просто поиск "правдивых" или "ложных" значений.

Действительно, вам просто нужно понять, когда и почему использовать == и ===, я не вижу причин, почему бы не использовать ==, где он лучше подходит...

Другим примером является использование этого сокращения, чтобы разрешать вызовы сокращенного метода:

function func(boolOptionNotCommonlyUsed) {
  if (boolOptionNotCommonlyUsed) { //equiv to boolOptionNotCommonlyUsed == true
    //do something we rarely do
  }
  //do whatever func usually does
}

func(); //we rarely use boolOptionNotCommonlyUsed, so allow calling without "false" as an arg

Ответ 4

== сравнивает, одинаковы ли значения двух сторон или нет.

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

Скажем, что

$var = 0;

if($var == false){
  // true because 0 is also read as false
}

if(!$var){
  // true because 0 is also read as false
}

if($var === false){
  // false because 0 is not the same datatype as false. (int vs bool)
}

if($var !== false){
  // true becuase 0 is not the same datatype as false. (int vs bool)
}

if($var === 0){
  // true, the value and datatype are the same.
}

вы можете проверить http://www.jonlee.ca/the-triple-equals-in-php/