Проверка на undefined js: JS. Проверка переменной на undefined или false / Песочница / Хабр
Как проверить undefined или null переменной в JavaScript?
Я думаю, что самый эффективный способ проверить «значение null
или undefined
» составляет
if ( some_variable == null ){
// some_variable is either null or undefined
}
таким образом, эти две строки эквивалентны:
if ( typeof(some_variable) !== "undefined" && some_variable !== null ) {}
if ( some_variable != null ) {}
Примечание 1
как уже упоминалось в вопросе, короткий вариант требует, чтобы some_variable
было объявлено, в противном случае будет выдан ReferenceError. Однако во многих случаях можно предположить, что это безопасно:
проверьте наличие опции аргументы:
function(foo){
if( foo == null ) {...}
проверьте свойства существующего объекта
if(my_obj.foo == null) {...}
С другой стороны typeof
может иметь дело с необъявленными глобальными переменными (просто возвращает undefined
). Однако эти случаи должны быть сведены к минимуму по уважительным причинам, как объяснил Альсьенде.
примечание 2.
это — еще короче — вариант не эквивалент:
if ( !some_variable ) {
// some_variable is either null, undefined, 0, NaN, false, or an empty string
}
так
if ( some_variable ) {
// we don't get here if some_variable is null, undefined, 0, NaN, false, or ""
}
Примечание 3
вообще рекомендуется использовать ===
вместо ==
.
Предлагаемое решение является исключением из этого правила. The проверка синтаксиса JSHint даже предоставляет eqnull
вариант по этой причине.
С руководство по стилю jQuery:
строгие проверки равенства ( = = = ) должны использоваться в пользу ==. Этот только
исключение — при проверке на неопределенный и null через null.// Check for both undefined and null values, for some important reason. undefOrNull == null;
Проверка Javascript На Null Vs. Undefined И Разница Между == И ===
Как проверить переменную, если она
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
истинно).
Больше в спецификации:
Значение null JavaScript. Значение undefined JavaScript. Специальные значения JavaScript.
Здравствуйте, уважаемые посетители моего скромного блога для начинающих вебразработчиков и web мастеров ZametkiNaPolyah.ru. Продолжаем тему типы данных JavaScript, на эту тему уже были публикации: JavaScript числа, JavaScript строки и символы JavaScript, логические значения true JavaScript и false JavaScript, преобразование строку в число JavaScript и число в строку JavaScript. В рубрике Заметки по JavaScript были также публикации: вставка JavaScript в HTML, JavaScript операторы и JavaScript выражения (void JavaScript, delete JavaScript, typeof JavaScript, new JavaScript). Данная публикация будет посвящена специальным значениям JavaScript значение null JavaScript и значение undefined JavaScript.
Значение null в JavaScript и значение undefined в JavaScript – это специальные значения и они даже чем-то похожи на первый взгляд, но это только на первый взгляд, общее у них только то, что оба этих значения (null и undefined) обозначают отсутствие значения у переменной и оба этих значения преобразуются в значение false. Больше значение null JavaScript и значение undefined JavaScript ничем не похожи между собой. Вот именно о том для чего нужно значение null в JavaScript и для чего используется undefined в JavaScript я и хочу поговорить на этот раз.
Значение null JavaScript. Проверка на null в JavaScript. Преобразование значения null в другие типы данных JavaScript.
Содержание статьи:
Начну я со значения null JavaScript. Ключевое слово null в JavaScript имеет особый смысл, значение null – это уникальное значение, обычно считается, что значение null относится к объектному типу данных JavaScript и говорит об отсутствие объекта. Значение null в JavaScript уникально и оно не похоже на другие значения ни на значение undefined, ни на ноль, ни на логическое значение false. Значение null в других языках – это то же самое, что и ноль, но не в языке JavaScript.
Если JavaScript переменная имеет значение null, то это означает, что эта переменная не содержит в себе ни массив, ни объект, ни строку, ни число, ни логическое значение, хотя значение null JavaScript можно преобразовать в любой тип данных.
Если мы преобразуем значение null в логический тип данных, то null преобразуется в значение false. Если мы хотим преобразовать специальное значение null в JavaScript строку, то мы получим строку “null”. Значение null можно преобразовать в JavaScript число, в этом случае null преобразуется в ноль. Если вы захотите преобразовать значение null в объектный тип данных (JavaScript массив или JavaScript объект), то у вас ничего не выйдет, поскольку в этом случае произойдет ошибка.
Значение undefined JavaScript. Проверка на undefined в JavaScript. Преобразование значения undefined в другие типы данных JavaScript.
Специальное значение undefined JavaScript – это второе специальное значение, которое есть в языке JavaScript. И даже иногда используется. JavaScript переменная имеет значение undefined если эта переменная объявлена, но ей еще не присвоено значение, программа вам вернет значение undefined в том случае, если вы попытаетесь обратиться к свойству JavaScript объекта или к элементу JavaScript массива, которого не существует.
Обратите внимание: значение null JavaScript и значение undefined JavaScript – это не одно и то же. Они даже не эквиваленты, хотя JavaScript оператор ==, оператор эквивалентности считает, что значение null и undefined равны друг другу. Например:
В данном случае я объявил JavaScript переменную n при помощи ключевого слова var, как я уже говорил: объявленные переменные, которым не присваивалось значение, имеют значение undefined. А затем при помощи оператора эквивалентности JavaScript == сравниваю значение, хранящееся в переменной n со значением null JavaScript, и естественно, что результатом такого сравнение будет логическое значение true.
Из всего выше сказанного можно сделать вывод: значение null и undefined в JavaScript говорят нам об отсутствие значения у переменной или об отсутствия свойства или элемента массива.
Чтобы отличить значение null от значения undefined мы можем воспользоваться оператором идентичности JavaScript (===) или оператором typeof JavaScript, который позволяет точно установить, какой тип данных имеет переменная, свойство объекта или элемент массива.
Если вы посмотрите список зарезервированных слов JavaScript, то увидите, что null является зарезервированным словом, а вот undefined является не зарезервированным. Это говорит о том, что в языке JavaScript есть глобальная переменная JavaScript undefined, значение которой равно undefined. Следовательно, глобальной переменной undefined можно присвоить другое значение, которое будет отличаться от значения undefined.
Поэтому, иногда вы можете встретить такую строку в начале программы на языке JavaScript:
В данном случае ключевое слово var объявляет JavaScript переменную undefined как глобальную. А поскольку переменной undefined не присвоено никакого значения, то она имеет значение undefined. В JavaScript есть оператор void, который приводит значение любой переменной к undefined. Значение undefined можно преобразовывать в другие типы данных JavaScript. Если мы преобразовываем значение undefined в JavaScript строку, то мы получим строку “undefined”, если возникнет необходимость преобразовать undefined в JavaScript число, то получится значение NaN. При преобразование значения undefined в логический тип данных JavaScript получится значение false.
На этом всё, спасибо за внимание, надеюсь, что был хоть чем-то полезен и до скорых встреч на страницах блога для начинающих вебразработчиков и вебмастеров ZametkiNaPolyah.ru. Не забываем комментировать и делиться с друзьями;)
Справочник javascript: typeof
Вызов typeof
возвращает строку, содержащую информацию о типе операнда.
Оператор typeof
используется в двух формах:
- typeof operand
- typeof (operand)
Эти формы идентичны: можно использовать скобки, а можно и не использовать — работает одинаково.
Оператор возвращает тип в виде строки, например:
var a = 5 alert(typeof a) // "number" var a = 'test' alert(typeof a) // "string"
Тип typeof
возвращается, исходя из следующей таблицы соответствия типам javascript:
Тип | Результат |
---|---|
Undefined | «undefined» |
Null | «object» |
Boolean | «boolean» |
Number | «number» |
String | «string» |
Function | «function» |
Любой другой объект | «object» |
Часто возникают вопросы — почему и зачем таблица именно такая? Ответ простой: потому что так получилось по ходу развития javascript.
В старом javascript-коде можно увидеть применение typeof
для проверки существования переменной:
if (typeof(var) == "undefined") { ... }
В современном javascript лучше писать:
if (window.var !== undefined) { ... }
или, зачастую, подойдет и просто:
if (window.var) { ... }
P.S. Использовать просто if(var)
нельзя, так как доступ к неопределенной переменной вызовет ошибку. Ну а обращение к отсутствующему свойству глобального объекта window всего лишь вернет undefined
Кроме того, оператор typeof
используется для полиморфизма. Например, следующая функция получает узел DOM или ID узла и в обоих случаях корректно прячет узел.
function hideNode(node) { if (typeof node == 'string') { node = document.getElementById(node) } node.style.display = 'none' }
javascript — проверка наличия undefined и null в jQuery
Переполнение стека
- Около
Продукты
- Для команд
Переполнение стека
Общественные вопросы и ответыПереполнение стека для команд
Где разработчики и технологи делятся частными знаниями с коллегамиВакансии
Программирование и связанные с ним технические возможности карьерного ростаТалант
Нанимайте технических специалистов и создавайте свой бренд работодателяРеклама
Обратитесь к разработчикам и технологам со всего мира- О компании
Загрузка…
javascript — проверка неопределенной переменной в шаблоне подчеркивания
Переполнение стека
- Около
Продукты
- Для команд
Переполнение стека
Общественные вопросы и ответыПереполнение стека для команд
Где разработчики и технологи делятся частными знаниями с коллегамиВакансии
Программирование и связанные с ним технические возможности карьерного ростаТалант
Нанимайте технических специалистов и создавайте свой бренд работодателяРеклама
Обратитесь к разработчикам и технологам со всего мира- О компании
.
Проверка JavaScript, существует ли переменная (определена / инициализирована)
Переполнение стека
- Около
Продукты
- Для команд
Переполнение стека
Общественные вопросы и ответыПереполнение стека для команд
Где разработчики и технологи делятся частными знаниями с коллегамиВакансии
Программирование и связанные с ним технические возможности карьерного ростаТалант
Нанимайте технических специалистов и создавайте свой бренд работодателяРеклама
Обратитесь к разработчикам и технологам со всего мира- О компании
.