"JavaScript: Проверка на null и undefined, а также разница между == и ==="
Как я могу проверить, является ли переменная
nullилиundefined, и в чем разница междуnullиundefined?В чем разница между операторами
==и===(трудно найти информацию в Google по запросу "===")?
5 ответ(ов)
Разница между undefined и null в 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";
}
// что-то делаем
}
Если вы опустите параметр optional, вызвав doSomething(1, 2), то optional будет равно строке "three", а если вы передадите doSomething(1, 2, null), то optional будет равно null.
Что касается операторов сравнения == и строгое равенство ===, то первый из них является слабым (переделывает), в то время как строгое равенство также проверяет тип значений. Это означает, что 0 == "0" вернет true, в то время как 0 === "0" вернет false, потому что число — это не строка.
Вы можете использовать эти операторы для проверки между undefined и null. Например:
null === null // => true
undefined === undefined // => true
undefined === null // => false
undefined == null // => true
Последний случай интересен, потому что позволяет проверять, является ли переменная либо undefined, либо null и ничего другого:
function test(val) {
return val == null;
}
test(null); // => true
test(undefined); // => true
Чтобы проверить, является ли переменная null или undefined, вы можете просто проверить, имеет ли переменная валидное значение следующим образом:
if (variable) {
Этот код вернёт true, если переменная не содержит:
- null
- undefined
- 0
- false
- "" (пустую строку)
- NaN
Таким образом, в условии будут выполнены все проверки на ложные значения. Если вам нужно проверить только на null и undefined, вы можете использовать более явное условие:
if (variable !== null && variable !== undefined) {
Это позволит вам более точно контролировать, что именно вы проверяете.
Неопределённое значение (undefined)
Это означает, что переменная ещё не инициализирована.
Пример:
var x;
if (x) { // таким образом можно сделать проверку
// код.
}
Сравнение (==)
Такое сравнение проверяет только равенство значений, не учитывая типы данных.
Пример:
var x = true;
var y = new Boolean(true);
x == y; // возвращает true
Поскольку проверяется только значение.
Строгое сравнение (===)
Это сравнение проверяет как значение, так и тип данных.
Пример:
var x = true;
var y = new Boolean(true);
x === y; // возвращает false
В данном случае проверяется, что тип данных x — примитивный, а y — объект типа Boolean.
Если ваша (логическая) проверка касается отрицания (!) и вы хотите захватить как null, так и undefined в JavaScript (поскольку разные браузеры могут выдавать разные результаты), вам следует использовать менее строгое сравнение. Например:
var ItemID = Item.get_id();
if (ItemID != null)
{
// выполняем действия
}
Такой код захватит как null, так и undefined, так как нестрогое сравнение (!=) проверяет значение на равенство без учета типа.
При использовании различных логик для проверки значений в JavaScript, вы можете применять следующий код для проверки всех четырех условий валидации: не null, не пустое (blank), не undefined и не ноль. Для этой проверки достаточно использовать конструкцию !(!(variable)).
Вот пример кода:
function myFunction() {
var data; // Значения могут быть null, пустыми, undefined или нулем, вы можете протестировать это
if (!(!(data))) {
// Если data содержит допустимое значение
alert("data " + data);
} else {
// Если data является null, пустым, undefined или нулем и т.д.
alert("data is " + data);
}
}
Этот код позволяет легко определить, имеет ли переменная data корректное значение. Если переменная содержит недопустимое значение, то вы получите соответствующее сообщение о том, что данные невалидны.
Существует ли стандартная функция для проверки переменных на null, undefined или пустые значения в JavaScript?
Как определить, является ли переменная 'undefined' или 'null'?
Почему null является объектом и в чем разница между null и undefined?
Проверка существования переменной в JavaScript (определена/инициализирована)
Как проверить неопределённую переменную в JavaScript