6

"JavaScript: Проверка на null и undefined, а также разница между == и ==="

12
  1. Как я могу проверить, является ли переменная null или undefined, и в чем разница между null и undefined?

  2. В чем разница между операторами == и === (трудно найти информацию в Google по запросу "===")?

5 ответ(ов)

0

Разница между 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
0

Чтобы проверить, является ли переменная null или undefined, вы можете просто проверить, имеет ли переменная валидное значение следующим образом:

if (variable) {

Этот код вернёт true, если переменная не содержит:

  • null
  • undefined
  • 0
  • false
  • "" (пустую строку)
  • NaN

Таким образом, в условии будут выполнены все проверки на ложные значения. Если вам нужно проверить только на null и undefined, вы можете использовать более явное условие:

if (variable !== null && variable !== undefined) {

Это позволит вам более точно контролировать, что именно вы проверяете.

0

Неопределённое значение (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.

0

Если ваша (логическая) проверка касается отрицания (!) и вы хотите захватить как null, так и undefined в JavaScript (поскольку разные браузеры могут выдавать разные результаты), вам следует использовать менее строгое сравнение. Например:

var ItemID = Item.get_id();
if (ItemID != null)
{
    // выполняем действия
}

Такой код захватит как null, так и undefined, так как нестрогое сравнение (!=) проверяет значение на равенство без учета типа.

0

При использовании различных логик для проверки значений в 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 корректное значение. Если переменная содержит недопустимое значение, то вы получите соответствующее сообщение о том, что данные невалидны.

Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь