- JavaScript проверяет, существует ли переменная (определена / инициализирована)
- 30 ответов
- Проверка на существование переменной в JavaScript
- Проверка через условное выражение
- Проверка через оператор typeof
- Проверка через сравнение с null
- Javascript если переменная существует
- Фильтрация данных с помощью zend-filter
- Контекстное экранирование с помощью zend-escaper
- Подключение Zend модулей к Expressive
- Совет: отправка информации в Google Analytics через API
- Подборка PHP песочниц
- Совет: активация отображения всех ошибок в PHP
- Как проверить, существует ли переменная или определена ли она в JavaScript
- Читайте также
- Похожие примеры:
JavaScript проверяет, существует ли переменная (определена / инициализирована)
@SamuelLiew Это обнаружилось в очереди обзора, в то время как я фильтровал это к POB. Я еще не действовал, но я должен сказать, что я изо всех сил пытаюсь видеть это как не POB, учитывая неопределенность запроса. Можете ли вы уточнить это так, что у него есть четкие / объективные показатели?
30 ответов
Оператор typeof проверяет, действительно ли переменная undefined.
if (typeof variable === 'undefined') < // variable is undefined >
Оператор typeof , в отличие от других операторов, не генерирует исключение ReferenceError при использовании с необъявленной переменной.
Однако обратите внимание, что typeof null вернет «object» . Мы должны быть осторожны, чтобы избежать ошибки инициализации переменной до null . Чтобы быть в безопасности, это то, что мы могли бы использовать вместо этого:
if (typeof variable === 'undefined' || variable === null) < // variable is undefined or null >
Для получения дополнительной информации об использовании строгого сравнения === вместо простого равенства == см.: Какой equals оператор (== vs ===) следует использовать в сравнении JavaScript?
if(! variable_here) сломается во многих случаях. Если переменная равна 0 или ложь, произойдет сбой. Это не то, что вы хотите.
StackOverflow — это правильные ответы, а не значки. Кроме того , никто не должен ever — undefined ever назвать переменную undefined . Я не могу поверить, что это даже работает.
не могу решить, стоит ли голосовать. Строго говоря, typeof foo === «undefined» является правильным и лучше, чем ответ с наибольшим количеством голосов, но дополнительные примечания только запутывают этот ответ.
@SamuelLiew ИМХО, тебе лучше просто удалить обе заметки. Какое это имеет значение, если вы сравниваете переменную, содержащую «undefined» ? Использование === вместо == действительно хорошая практика, но ваше объяснение почему не имеет смысла.
@SamuelLiew они могут, но первый на самом деле правильно (и законно) и не имеет отношения к вопросу === против == .
@ StevenPenny Это сейчас. Сначала все было по-другому, затем OP редактировал его, пока он не изменился.
@ StevenPenny Проверьте сроки. Верхний ответ был объединен с другим вопросом после публикации этого ответа.
@Saiid undefined можно переопределить. например: undefined = false; undefined = true; , Ответ — единственный верный способ убедиться, что переменная действительно не определена.
Предупреждение: Это не работает для членов объектов, если вы пытаетесь получить к ним доступ, используя точечную запись, как в some_object.a_member .
это не проверяет, существует ли переменная, оно проверяет ее тип значения. Вы хотите проверить, была ли объявлена переменная. @ BrianKelley ответ правильный.
if (typeof variable !== 'undefined') < // the variable is defined >
На самом деле, вы должны проверить, что объект — это то, что вам нужно. Так было бы, если (typeof console == ‘object’)/>
@staticsan: Это хорошая вещь для рассмотрения, но много раз вы действительно заботитесь, только если она определена. Например, используемый вами API определяет переменную, которую вы используете только для проверки загрузки API.
IE8 сообщил и ошибка, когда я использовал: (переменная typeof === «undefined»), поэтому я должен был проверить (переменная typeof === «object»), и это работало
@ Shog9 Это похоже на ошибку. Этот ответ отображается выше, чем принятый ответ. Возможно, это так или иначе считается принятым, потому что это было принято в другом вопросе?
Как бы ни был прост JavaScript, как этот, я НИКОГДА не использовал его, но он прекрасно подходит для моих целей. У меня есть несколько файлов .js, которые запускают одни и те же функции из глобального файла js, но только если определенная переменная существует, должны запускаться определенные функции. В противном случае я устанавливал для переменной значение true или false и проверял это, но для этого мне потребовалось бы обратиться к ней с десятками js-файлов, поэтому мне нужно другое решение. Отлично!
@Jason S «гм, нет, это не сработает для ложных и 0» — гм, да, если вы знаете, что ваша переменная не может быть ложной или 0 🙂
Если вы используете ES6, и ваша переменная может быть объявленной или константной переменной, существует вероятность того, что этот код может попасть во временную мертвую зону и вызвать ReferenceError. if (typeof variable !== ‘undefined’) < // the variable is defined >; const variable = ‘a’; => ReferenceError
В JavaScript переменная может быть определена, но удерживать значение undefined , поэтому наиболее распространенный ответ не является технически корректным и вместо этого выполняет следующее:
if (typeof v === "undefined") < // no variable "v" is defined in the current scope // *or* some variable v exists and has been assigned the value undefined >else < // some variable (global or local) "v" is defined in the current scope // *and* it contains a value other than undefined >
Это может быть достаточно для ваших целей. Следующий тест имеет более простую семантику, что упрощает точное описание поведения вашего кода и его самого понять (если вас это беспокоят):
Это, конечно, предполагает, что вы работаете в браузере (где window — это имя для глобального объекта). Но если вы дергаетесь с подобными глобалами, вы, вероятно, находитесь в браузере. Субъективно использование ‘name’ in window стилистически согласуется с использованием window.name для ссылки на глобальные переменные. Доступ к глобальным переменным как свойствам window , а не как переменные, позволяет свести к минимуму количество необъявленных переменных, которые вы ссылаетесь в своем коде (в интересах листинга), и избегает возможности того, что ваш глобальный объект будет затенен локальной переменной. Кроме того, если глобалы заставят вашу кожу сканировать, вы можете чувствовать себя более комфортно, касаясь их только этой относительно длинной палкой.
Проверка на существование переменной в JavaScript
В JavaScript, одной из распространенных проблем, с которой сталкиваются новички, является проверка инициализации переменной. Может возникнуть необходимость проверить, была ли переменная определена или инициализирована, прежде чем использовать ее в коде. В противном случае, может произойти ошибка, которая прервет выполнение кода.
let myVar; // дальнейший код
Если myVar используется дальше по коду без предварительной инициализации, это может вызвать ошибки.
Существует несколько способов проверить, была ли переменная инициализирована в JavaScript.
Проверка через условное выражение
Один из самых простых способов — использовать переменную в условном выражении:
Этот способ удобен, но он не всегда точен. Например, он будет считать переменную неинициализированной, если ее значение равно false , 0 , пустой строке, null , undefined , NaN .
Проверка через оператор typeof
Другой способ — использовать оператор typeof :
let myVar; if (typeof myVar !== 'undefined') < // код, который выполняется, если переменная инициализирована >
Оператор typeof возвращает строку, указывающую тип операнда. Если переменная не была инициализирована, typeof вернет ‘undefined’ .
Проверка через сравнение с null
Еще один способ — сравнить переменную с null :
Этот способ считает переменную инициализированной, если ее значение не равно null или undefined .
В зависимости от ситуации и от того, что считается «инициализацией» в конкретном контексте, может быть использован любой из этих методов.
Javascript если переменная существует
В этом разделе помещены уроки по PHP скриптам, которые Вы сможете использовать на своих ресурсах.
Фильтрация данных с помощью zend-filter
Когда речь идёт о безопасности веб-сайта, то фраза «фильтруйте всё, экранируйте всё» всегда будет актуальна. Сегодня поговорим о фильтрации данных.
Контекстное экранирование с помощью zend-escaper
Обеспечение безопасности веб-сайта — это не только защита от SQL инъекций, но и протекция от межсайтового скриптинга (XSS), межсайтовой подделки запросов (CSRF) и от других видов атак. В частности, вам нужно очень осторожно подходить к формированию HTML, CSS и JavaScript кода.
Подключение Zend модулей к Expressive
Expressive 2 поддерживает возможность подключения других ZF компонент по специальной схеме. Не всем нравится данное решение. В этой статье мы расскажем как улучшили процесс подключение нескольких модулей.
Совет: отправка информации в Google Analytics через API
Предположим, что вам необходимо отправить какую-то информацию в Google Analytics из серверного скрипта. Как это сделать. Ответ в этой заметке.
Подборка PHP песочниц
Подборка из нескольких видов PHP песочниц. На некоторых вы в режиме online сможете потестить свой код, но есть так же решения, которые можно внедрить на свой сайт.
Совет: активация отображения всех ошибок в PHP
При поднятии PHP проекта на новом рабочем окружении могут возникнуть ошибки отображение которых изначально скрыто базовыми настройками. Это можно исправить, прописав несколько команд.
Как проверить, существует ли переменная или определена ли она в JavaScript
Если вы хотите проверить, была ли переменная инициализирована или определена (т. е. проверить, была ли переменная объявлена и ей присвоено значение), вы можете использовать оператор typeof .
Самая важная причина использования оператора typeof заключается в том, что он не вызывает ошибку ReferenceError , если переменная не была объявлена. Давайте посмотрим на следующий пример: