Найти в Дзене
Дзен.Framework

2.3.3 Немного про неизвестность и определение типов

Есть в JS такая штука любопытная, как "фиг-знает-чего-ты-хочешь". Надо отдать должное создателям языка: они оказались культурными (или язык у англоязычного ообщества не достаточно богат на эпитеты?). Назвали они такое состояние undefined. Что же это? Вообще это отдельный тип данных, характерный JS, который имеют переменные, которым не было присвоено значение, либо, что очень важно - если переменная вообще не была объявлена, то для компьютера попытка её вызвать тоже undefined. Сейчас на примерах. var a;
console.log(a);
console.log(a == null);
console.log(a === null); Этот код выведет в консоль следующее: undefined
true
false Иными словами мы можем убедиться, что значение не было присвоено. При этом на уровне НЕ строгого сравнения это значение будет равно NULL. Важно! Старайтесь не ограничиваться объявлением переменных, которые не факт, что получат значения. В противном случае, используя НЕ типизированное сравнение вы можете получить не правильное поведение скрипта. Есть два способа пров
Изображение из открытых источников
Изображение из открытых источников

Есть в JS такая штука любопытная, как "фиг-знает-чего-ты-хочешь".

Надо отдать должное создателям языка: они оказались культурными (или язык у англоязычного ообщества не достаточно богат на эпитеты?). Назвали они такое состояние undefined.

Что же это?

Вообще это отдельный тип данных, характерный JS, который имеют переменные, которым не было присвоено значение, либо, что очень важно - если переменная вообще не была объявлена, то для компьютера попытка её вызвать тоже undefined.

Сейчас на примерах.

var a;
console.log(a);
console.log(a == null);
console.log(a === null);

Этот код выведет в консоль следующее:

undefined
true
false

Иными словами мы можем убедиться, что значение не было присвоено. При этом на уровне НЕ строгого сравнения это значение будет равно NULL.

Важно! Старайтесь не ограничиваться объявлением переменных, которые не факт, что получат значения. В противном случае, используя НЕ типизированное сравнение вы можете получить не правильное поведение скрипта.

Есть два способа проверить переменную на undefined:

1. явное сравнение:

var = a;
console.log(a === undefined);

Здесь пишется без ковычек, так как мы сравниваем именно с типом "неизвестно". Получим TRUE, что означает верность проверки.

2. использование оператора typeof:

var a;
console.log(typeof(a) === 'undefined');

Пишем в ковычках потому, что оператор возвращает тип проверяемой переменной в строке.

Оператор typeof достаточно полезен в случаях, когда разработчик не уверен в существовании переменной. К примеру, существует ли элемент массива? Проверить можно простым условием:

var a = [0, 1, 2];
console.log(typeof(a[0]));
console.log(typeof(a[10]));

Ответом будет 'number' для первого вывода и 'undefined' для второго.

-2

Последним в консоль я вывел НЕ объявленную нигде переменную g. Ошибок нет: она не объявлена, значит просто сообщаем об этом разработчику и живем дальше.

Но этот же оператор может сыграть и "шутку". На приведенном примере я вывел варианты ответов для основных типов, которые упоминал ранее.

Обратите внимание что NULL, массив и объект имеют тип "object". Это важно помнить используя typeof, потому что определение правильного типа для них - отдельная статья.

Все статьи попадают в "Оглавление канала". Не пропускаем новости!

-3