В чем разница сравнений == и ===
Операторы сравнения == и === отличаются тем, что == может сравнить числа со строками и выдавать true, а оператор === при сравнения разных типов изначально дает false.
То есть если сравниваете с помощью === число с не числом (строки, булевы и т.д.) не раздумывая сразу получаете false. Тип разный и дальше и нечего сравнивать.
А == сначало приведет к одному типу правую часть сравнения, а потом и левую и сравнить уже два одинаковых типа. true он всегда приводит к 1, а false к 0.
Есть проверка на отрицание != и !==
А вот проверок на больше-меньше строгих несуществует. в JS, и в других ЯП, есть только <= или >=
Вот примеры сравнений для закрепления знаний (приминительно к языку программирования javascript):
99 == "99" выдаст true
99 == "test" // false, т.к. строка приведется к числу типа NaN
1 == true // true, т.к. тру приведется к 1
1 == "" // false, т.к. пустая строка то 0
"1" == true // true, сначала сравнит "1" == 1, а след. шагом "1" приведется к 1 и будет сравнения 1 == 1
undefined == null // true, т.к. у обоих отсутствую значения
"true" == true // false, т.к. приводится в конце концов к 0 == 1 (сначала правую часть true к 1, а затем левую строку к числу, строковая true это 0)
И самое простое, сравнение тройное === (по другому называется "Строгое равенство", оператор "тождественности"):
"21" === 21 // false, т.к. разные типы
"0" === 0 // false, т.к. разные типы
"0" === false // false, т.к. разные типы
"true" === true // false, т.к. разные типы
true === (1 === "1") // false, т.к. разные типы
При сравнении объектов == и === работают и одинаково и выдают true если ссылки двух сравниваемых переменных указывают на один и тот же объект.
Оставить свой ответ: