Все мы знаем, что == и === - это операторы сравнения в JavaScript. Но == - это оператор
равенства, он конвертирует операнды если они не одного типа, прежде чем
осуществлять сравнение. В то же время === называется оператором идентичности
или строгого равенства, он возвращает true если операторы строго равны, т.е. они
одинакового типа с одинаковым значением.
Оператор сравнения (==)
сравнивает только значения переменных.
i.e var x = 20;
var y = 20;
console.log( x == y );
// Вернет: true. Потому что значения идентичны
Примечание: == ведет себя
также как и === только в ситуации когда переменные одинакового типа.
Из предыдущего примера var x и y имеют одинаковый численный тип
поэтому здесь мы может опустить строгое равенство (===).
e.g 1. Var x1 = 30;
var x2 = “chisom”;
console.log(x1 == x2);
//Вернет: false. Изза того что у переменных разный, использовать == здесь не совсем
правильно.
e.g 2. == никогда не заменить ===, потому что в примере
ниже попробует преобразовать значение прежде чем делать сравнение, и в
некоторых случаях преобразует к другому типу.
var a = 5;
var c = “5”;
console.log (a == c);
//Вернет: true : потому что наши переменные были
преобразованы в целочисленные 5, перед проверкой значений на равнество что сейчас
true.
Причины когда вы захотите использовать === вместо ==
- Безопаснее использовать === в большинстве случаев, и если вы собираетесть использовать этот оператор, то в некоторых случаях это будет правильнее использовать его везде.
- Вы можете каждый раз задавать себе вопрос проверка на какое равенство вам нужна, а можете просто всегда использовать ===
- В третьих – более сложный сценарий использования == вместо – это когда вам необходимо сравенение с возможным преобразованием (например если вы хотите проверить 0 и ‘’ и хотите получить в результате сравения false). В таких случаях кстати можно использовать if(! empty_str) вместо (empty_str == false).
Оператор Typeof
Как им пользоваться?
Поскольку это унарный
оператор, то операнд следует за ним. И больше ничего не нужно.
typeof 5 //число
typeof “chisom”
// строка
Оператор typeof – это не функция. Вы можете
добавить скобки и размещать операнд внутри них, но они будут использоваться для
группировки а
не как вызов функции. На самом деле вы можете декорировать операнд как угодно
соблюдая при этом правила синтаксиса языка.
e.g. typeof(4)
// число
typeof(2+3)//
число
typeof не очень разборчивый оператор. Если вы
применяете его для объекта у которого тип не является функцией, то он
возвращает «объект». Он не разделяет на встроеные объекты или кастомные. Вы это
можете проверить в MDN.
Но это то место которое вызывает
вопросы:
//Первая проверка типа работает хорошо
var person = {
getFirstName: function () {
console.log(‘chisom’);
}
};
if (typeof person === ‘object’) {
person.getFirstName(); // этот код работает так как мы и ожидаем
}
getFirstName: function () {
console.log(‘chisom’);
}
};
if (typeof person === ‘object’) {
person.getFirstName(); // этот код работает так как мы и ожидаем
}
//Вторая
проверка типа бросает исключение.
var person = [];
var person = [];
if (typeof person === ‘object’) {
person.getFirstName(); //person.getFirstName не функция
}
Во второй части примера вы
можете видет что typeof падает изза попытки проверить
является ли объект person простым объектом, что на самом
деле не так.
В завершение можно чказать что
оператор typeof немного странный. Если вы не
знаете наверняка как им пользоваться, просто не пользуйтесь им, иначе можете
просто посмотреть как он используется с помощью Object.prototype.toString.call();
1 комментарий:
Я Абрам Александр, бизнесмен, который смог возродить свой умирающий лесозаготовительный бизнес с помощью отправленного Богом кредитора, известного как Бенджамин Ли, Кредитный Консультант. Проживаю в Екатеринбурге Екатеринбург. Вы пытаетесь начать бизнес, погасить свой долг, расширить свой существующий, нуждаетесь в деньгах для покупки расходных материалов. Если у вас возникли проблемы с попыткой получить хорошую кредитную линию, я хочу, чтобы вы знали, что мистер Бенджамин проведет вас до конца. Это правильное место для вас, чтобы решить все ваши финансовые проблемы, потому что я живое свидетельство, и я не могу просто оставить это при себе, когда другие ищут способ быть финансово поднятым .. Я хочу, чтобы вы все связались с этим Богом, посланным кредитором используя детали, как указано в других, чтобы принять участие в этой прекрасной возможности Электронная почта: lfdsloans@outlook.com Или WhatsApp / Text + 1-989-394-3740.
Отправить комментарий