JavaScript имеет два способа определить, равны ли два значения.
Равный символ
Символ равенства состоит из двух равных знаков: ==
JavaScript-это язык слабого типа. Это означает, что равные знаки будут отбрасывать тип, чтобы сравнить два значения.
Кода -копия выглядит следующим образом:
"" == "0" // Неверно
0 == "" // true
0 == "0" // true
false == "false" // false
false == "0" // true
false == неопределенное // false
false == null // false
null == не определено // true
"/t/r/n" == 0 // true
Приведенный выше код показывает результат преобразования типа, поэтому мы знаем, что использование равного знака == является плохой привычкой программирования. Из -за сложного механизма преобразования типа в JavaScript результирующие ошибки станут трудно отслеживать.
Кроме того, литье типов также может оказать определенное влияние на производительность, например, когда строка сравнивается с числом, она будет подчеркнуть для числа.
Строгий символ равенства
Строгий символ равенства состоит из трех равных знаков: ===
Это похоже на работу равных символов, но строго равные символы не будут выполнять литые операции.
Кода -копия выглядит следующим образом:
"" === "0" // Неверно
0 === "" // Неверно
0 === "0" // Неверно
false === "false" // false
false === "0" // false
false === не определено // false
false === null // false
null === Неопределенный // Неверно
"/t/r/n" === 0 // false
Приведенный выше код делает код чистым. Если два значения имеют разные типы, они напрямую возвращают False, что также улучшит производительность.
Объект сравнения
Хотя == и === называются равными признаками, производительность будет очень отличаться, когда одно из двух сравниваемых значений является объектом.
Кода -копия выглядит следующим образом:
{} === {}; // ЛОЖЬ
новая строка ('foo') === 'foo'; // ЛОЖЬ
новый номер (10) === 10; // ЛОЖЬ
var foo = {};
foo === foo; // истинный
Здесь больше не просто сравнивать, равны ли два значения, это будет определять, ссылаются ли два значения к одному и тому же экземпляру объекта, который ведет себя больше как указатель в C.
Суммировать
Здесь настоятельно рекомендуется использовать только строгие символы равенства ===. Если нам нужно сделать преобразование типа, мы можем провести явное преобразование типа перед сравнением, вместо того, чтобы полагаться на собственный сложный метод литья JavaScript.