Проверка undefined на Javascript
Undefined представляет собой один из примитивных типов данных и обладает лишь одним значением — undefined. В строго типизированных динамически типизированных языках программирования часто можно столкнуться с ошибкой типа Reference Error. Она является реакцией на то, что в коде присутствует объявленная область памяти (переменная, параметр функции, свойство и т. п.), которой не было присвоено какое-либо значение. При обращении к пустой переменной будет ошибка.
В JavaScript интерпретатор немного иначе реагирует на обращение к пустым переменным, выдавая строку со значением «undefined», хотя это значение не является строкой, а конвертируется в нее для вывода на экран.
Создание переменной со значением undefined
В JavaScript undefined присваивается переменным автоматически в ряде случаев — в этом и вся прелесть этого значения. Однако программист может объявить переменную со значением undefined и самостоятельно. Для этого нужно лишь присвоить переменной это значение.
Пример:
var book = undefined;
console.log(book) // undefined
Undefined не является ключевым словом, однако нельзя объявить переменную с таким именем.
Пример:
var undefined = 3;
console.log(undefined); // выведет undefined
Нельзя проводить математические операции с undefined.
Пример:
console.log(5+undefined); // при любых математических операциях будет выводиться NAN
Undefined можно конкатенировать со строками.
Пример:
console.log(«Hello «+undefined); // Hello undefined
Все выше перечисленные операции не имеют никакого смысла в программировании на JavaScript. Это лишь наглядная демонстрация того, что значение undefined имеет свою ценность только как значение. Проделывать какие либо операции с ним не имеет смысла. Основную ценность этот тип данных имеет когда присваивается переменным автоматически.
Автоматическое присвоение undefined
Есть ряд ситуаций, когда значение ubdefined автоматически присваивается переменным разных типов, кроме объектов. Всем известно, что переменная, которая ссылается на пустой объект получает значение null. Однако сейчас мы говорим об undefined и теперь нам нужно понять в каких ситуациях оно присваивается. Происходит это во время выполнения программы интерпретатором. Итак, undefined по умолчанию присваивается пустым переменным.
Пример:
var car; // объявление переменной без присвоения значения
console.log(car); // эта строчка выполняется интерпретатором и выводит на экран undefined
console.log(bar); // выведет ошибку «Reference Error: bar is not defined», если обратится к несуществующей переменной, то будет ошибка
По умолчанию undefined присваивается не инициализированным свойствам объекта, а также несуществующим свойствам
Пример:
var obj = {width: 75, height};
console.log(obj.width); // 75 — все отлично
console.log(obj.height); // undefined — не инициализированное свойство
console.log(obj.weight); // undefined — в контексте объекта не будет ошибки при обращении к несуществующему свойству, как при обращении к локальной или глобальной переменной
Присваивается undefined несуществующим индексам массивов при обращении к таковым.
Пример:
var arr = [«a», «b», «c»];
console.log(arr[2]); // c
console.log(arr[5]); // undefined — обращение к несуществующему индексу, находящемуся за пределами длины массива
console.log(arr.length); // 3
console.log(arr.[24]); undefined
Функции, которые ничего не возвращают, а выполняют лишь какие-либо действия также возвращают undefined, но на работу программы это никак не влияет. Когда в функции определен оператор return, то возврат виден явно. Когда в функции нет такого оператора она все равно возвращает некое значение и это значение undefined. Для наглядности следует по экспериментировать с вызовом функции без оператора return в консоли браузера.
Пример:
function sum(a,b){return a+b} // функция явно возвращает результат
function sum1(a,b){c=a+b} // функция ничего не возвращает, а выполняет некие действия
function nothing(){console.log(«Hello»); return;} // выводит сообщение, а пустой оператор return просто выводит интерпретатор из функцииsum(5,5); // 10 — возврат сложения двух чисел
sum1(5,5); // сложение выполнилось и функция возвращает undefined
nothing(); // Hello, и возврат undefined оператором return
Логическое значение undefined
Если сравнивать с булевыми значениями, то undefined всегда равен false (undefined==false// true).
Пример:
typeof undefined === «false» // true
undefined === null; // false — так произошло потому, что undefined является примитивным типом данных, а null является объектом.
undefined == null; // true — так произошло по той причине, что undefined и null равны по значению, но разные по типу
Итог
Переопределить тип undefined нельзя в JavaScript — это значение фиксировано и присваивается в ряде случае описанных выше. Программист лишь может контролировать механизм присвоения undefined вручную, или положиться на интерпретатор. Ручное присвоение переменной этого значения не имеет никакого смысла. Интерпретатор в нужный момент присвоит его самостоятельно.
Не следует путать тип undefined с типом null. При проверке на совместимость будет false. При проверке на тип undefined будет undefined, а null идентифицируется как объект, так как по сути это обозначение ссылки на несуществующий объект в куче (хипе).
Механизм присвоения undefined — это отличный способ упростить программисту работу. Так как в других языках, обращение к неопределенным переменным приводит к ошибке Reference error. JavaScript интерпретатор продолжает свою работу, просто присваивает пустым переменным значение по умолчанию — undefined.