- Как проверить переменную, если она - nullили- undefinedи в чем разница между- nullи- undefined?
- В чем разница между - ==и- ===(сложно найти в Google "===")?
Проверка JavaScript на null vs. undefined и разница между == и ===
Ответ 1
Как проверить переменную, если она
nullилиundefined...
Является ли переменная null:
if (a === null)
// or
if (a == null) // but see note below
... но обратите внимание, что последнее также будет истинным, если a - undefined.
Это undefined:
if (typeof a === "undefined")
// or
if (a === undefined)
// or
if (a == undefined) // but see note below
... но опять же, обратите внимание, что последний туманный; это также верно, если a - null.
Теперь, несмотря на вышеописанное, обычный способ проверить, что это означает, что они ложны:
if (!a) {
    // `a` is falsey, which includes `undefined` and `null`
    // (and `""`, and `0`, and `NaN`, and [of course] `false`)
}
Это определено ToBoolean в спецификации.
... и в чем разница между
nullиundefined?
Они оба значения обычно используются, чтобы указать на отсутствие чего-то. undefined является более общим, используется как значение по умолчанию для переменных, пока не будет присвоено какое-либо другое значение, как значение аргументов функции, которые не были указаны при вызове функции, и как значение, которое вы получаете, когда вы попросите объект для свойства, которого у него нет. Но он также может быть явно использован во всех этих ситуациях. (Существует разница между объектом, не имеющим свойства, и обладающим свойством со значением undefined; существует разница между вызовом функции со значением undefined для аргумента и оставлением этого аргумента полностью.)
 null немного более определен, чем undefined: это пустая ссылка на объект. Разумеется, JavaScript явно напечатан, но не все вещи, с которыми взаимодействует JavaScript, свободно набираются. Если API, подобный DOM в браузерах, нуждается в ссылке на объект, пустой, мы используем null, а не undefined. И аналогично, операция DOM getElementById возвращает ссылку на объект — либо действительный (если он нашел элемент DOM), либо null (если это не так).
Интересно (или нет), это их собственные типы. То есть null - единственное значение в типе Null, а undefined - единственное значение в типе Undefined.
В чем разница между "==" и "==="
Единственное различие между ними заключается в том, что == будет выполнять принуждение типа, чтобы попытаться совместить значения, а === - нет. Так, например, "1" == 1 истинно, потому что "1" приближается к 1. Но "1" === 1 является ложным, потому что типы не совпадают. ("1" !== 1 истинно.) Первый (реальный) шаг ===: "Являются ли типы операндов одинаковыми?" и если ответ "нет", результатом будет false. Если типы совпадают, это делает именно то, что делает ==.
Тип принуждения использует довольно сложные правила и может иметь неожиданные результаты (например, "" == 0 истинно).
Больше в спецификации:
-  Сравнительное сравнение эквивалентов (==, также называемое свободным равенством)
-  Строгое сравнение равенств (===)
Ответ 2
Разница тонкая.
В JavaScript переменная undefined - это переменная, которая никогда не была объявлена или никогда не назначала значение. Скажем, вы, например, объявляете var a;, тогда a будет undefined, потому что ему никогда не присваивалось никакого значения.
Но если вы затем назначили a = null;, тогда a теперь будет null. В JavaScript null есть объект (попробуйте typeof null в консоли JavaScript, если вы мне не верите), что означает, что значение null является значением (на самом деле даже undefined является значением).
Пример:
var a;
typeof a;     # => "undefined"
a = null;
typeof null;  # => "object"
Это может оказаться полезным в аргументах функции. Возможно, вы захотите иметь значение по умолчанию, но считайте null приемлемым. В этом случае вы можете:
function doSomething(first, second, optional) {
    if (typeof optional === "undefined") {
        optional = "three";
    }
    // do something
}
Если вы опустите параметр optional doSomething(1, 2) then optional, будет строка "three", но если вы пройдете doSomething(1, 2, null), то необязательным будет null.
Что касается равных == и строго равных === компараторов, первый - слабо тип, а строго равный, также проверяет тип значений. Это означает, что 0 == "0" вернет true; а 0 === "0" вернет false, потому что число не является строкой.
Вы можете использовать эти операторы для проверки между undefined a null. Например:
null === null            # => true
undefined === undefined  # => true
undefined === null       # => false
undefined == null        # => true
Последний случай интересен, потому что он позволяет вам проверить, является ли переменная либо undefined, либо нулем, и ничего больше:
function test(val) {
    return val == null;
}
test(null);       # => true
test(undefined);  # => true
Ответ 3
Спектр - это место, где можно получить полные ответы на эти вопросы. Здесь резюме:
-  Для переменной xвы можете:-  проверьте, имеет ли он nullпутем прямого сравнения с помощью===. Пример:x === null
-  проверить, является ли это undefinedодним из двух основных методов: прямое сравнение сundefinedилиtypeof. Для разных причин, я предпочитаюtypeof x === "undefined".
-  проверьте, является ли это одним из nullиundefined, используя==и полагаясь на правила принуждения с незначительным таинственным типом, которые означаютx == null, делает именно то, что вы хотите.
 
-  проверьте, имеет ли он 
-  Основное различие между ==и===заключается в том, что если операнды имеют разные типы,===всегда будет возвращатьfalse, а==преобразует один или оба операнда в один и тот же тип, используя правила, которые приводят к некоторому слегка неинтуитивному поведению. Если операнды имеют один и тот же тип (например, обе строки, например, в приведенном выше сравненииtypeof),==и===будут вести себя точно так же.
Дополнительная информация:
- Ангус Кролл Истина, равенство и JavaScript
- Andrea Giammarchi JavaScript Coercion Demystified
- comp.lang.javascript Часто задаваемые вопросы: Тип JavaScript-конверсии
Ответ 4
undefined
Это означает, что переменная еще не установлена.
Пример:
var x;
if(x){ //you can check like this
   //code.
}
равно (==)
Только проверочное значение равно не типу данных.
Пример:
var x = true;
var y = new Boolean(true);
x == y ; //returns true
Потому что он проверяет только значение.
Строгие равные (===)
Проверяет, что значение и тип данных должны быть одинаковыми.
Пример:
var x = true;
var y = new Boolean(true);
x===y; //returns false.
Поскольку он проверяет тип данных x является примитивным типом, а y является булевым объектом.
Ответ 5
Как проверить переменную, если она равна null или undefined
просто проверьте, имеет ли переменная допустимое значение:
if(variable)
он вернет true, если переменная не содержит:
- NULL
- undefined
- 0
- ложь
- "" (пустая строка)
- NaN
Ответ 6
Объявление 1. null не является идентификатором свойства глобального объекта, как undefined может быть
let x;      // undefined
let y=null; // null
let z=3;    // has value
// 'w'      // is undeclared
if(!x) console.log('x is null or undefined');
if(!y) console.log('y is null or undefined');
if(!z) console.log('z is null or undefined');
try { if(w) 0 } catch(e) { console.log('w is undeclared') }
// typeof not throw exception for undelared variabels
if(typeof w === 'undefined') console.log('w is undefined');Ответ 7
 Если ваша (логическая) проверка предназначена для отрицания (!), И вы хотите захватить как JS null и undefined (поскольку разные браузеры предоставят вам разные результаты), вы будете использовать менее ограничительное сравнение: например:
var ItemID = Item.get_id();
if (ItemID != null)
{
 //do stuff
}
 Это фиксирует как null и undefined
Ответ 8
Вы можете использовать приведенный ниже код для проверки всех четырех (4) условий для проверки, например, не ноль, не пустой, не неопределенный и не ноль, используйте только этот код (! (! (Variable))) только в javascript и jquery.
function myFunction() {
var data;  //The Values can be like as null, blank, undefined, zero you can test
if(!(!(data)))
{
   //If data has valid value
    alert("data "+data);
} 
else 
{
    //If data has null, blank, undefined, zero etc.
    alert("data is "+data);
}
}
Ответ 9
Если вы хотите проверить null или undefined, но не полагаться на простоту фальшивости, вы также можете использовать этот многоразовый компонент is-nil, который определяет, является ли ссылка val нулевой или undefined.
Примеры:
isNil(null) // => true
isNil('') // => true
Для пустой строки, например, она вернет false.
