Проверка существования переменной javascript: JS проверить существование переменной — isset undefined

javascript — Как проверить существует ли объект

Вопрос задан

Изменён 11 лет 3 месяца назад

Просмотрен 20k раз

Как проверить существует ли глобальный объект? Есть код:

function foo() {
    GlobalObj.doSome()
}

Надо узнать, существует ли объект. Как я понял, в итоге должно получиться нечто подобное:

function foo() {
    ifdef (GlobalObj) {
        GlobalObj.doSome()
    }
}

Есть ли разница между

if (GlobalObj != undefined) {...}

и

if (typeof GlobalObj != 'undefined') {...}

Можно ли просто использовать блок try/catch?

  • javascript
if (typeof GlobalObj !== "undefined" && GlobalObj !== null) 
{. [ undefined ]

1

Можете использовать проверку на undefined:

if (GlobalObj != undefined) {...}

1

В определенных случаях есть смысл жестко указать на то что ищем именно глобальную переменную: window.GlobalObj И в данном случае проверка может быть: if(!window.GlobalObj){...} (если быть уверенным точно что window.GlobalObj !== false)

Разница между

if (GlobalObj != undefined) {...}

и

if (typeof GlobalObj != 'undefined') {...}

существует 🙂 Если typeof GlobalObj == 'undefined', то в первом случае выбросится ошибка: ReferenceError: GlobalObj is not defined

Зарегистрируйтесь или войдите

Регистрация через Google

Регистрация через Facebook

Регистрация через почту

Отправить без регистрации

Почта

Необходима, но никому не показывается

Отправить без регистрации

Почта

Необходима, но никому не показывается

Нажимая на кнопку «Отправить ответ», вы соглашаетесь с нашими пользовательским соглашением, политикой конфиденциальности и политикой о куки

Проверить наличие переменных в PHP / JS > VielhuberДэвид

При ежедневной работе с переменными в PHP и JavaScript часто возникает вопрос, является ли переменная пустой. Для проверки полезно знать собственные функции и их различия. К сожалению, нет простого способа интуитивно проверить, присутствует ли переменная или нет. Приведенная ниже матрица иллюстрирует, что под этим подразумевается. Однако то, что вы хотите, можно дополнить небольшими вспомогательными функциями.


PHP

 
=== null== nullis_nullissetemptyif/elseternarycount > 0== ''=== ''@__x
$atruetruetruefalsetruefalsefalsefalsetruefalsefalse
nulltruetruetruefalsetruefalsefalsefalsetruefalsefalse
[]falsetruefalsetruetruefalsefalsefalsefalsefalsefalse
0
falsetruefalsetruetruefalsefalsetruetruefalsetrue
1falsefalsefalsetruefalsetruetruetruefalsefalsetrue
-1falsefalsefalsetruefalsetruetruetruefalsefalsetrue
''falsetruefalsetruetruefalsefalsetruetruetruefalse
' 'falsefalsefalsetruefalsetruetruetruefalsefalsefalse
str
falsefalsefalsetruefalsetruetruetruefalsefalsetrue
[0,1]falsefalsefalsetruefalsetruetruetruefalsefalsetrue
[0]falsefalsefalsetruefalsetruetruetruefalsefalsetrue
new stdClass()falsefalsefalsetruefalsetruetruetruefalsefalsefalse

Реализация __x:

php">740550c6b3d2b9ae03e4d220eb08e6e3

Вспомогательная функция __x вызывается с оператором контроля ошибок @, что обычно не рекомендуется, чтобы также иметь возможность проверять ранее неопределенные переменные.

JavaScript

 === null== nulltypeof input === 'undefined'if/elseternarylength > 0== ''=== ''__x
$afalsetruetruefalsefalsetype errorfalsefalsefalse
nulltruetruefalsefalsefalsetype errorfalsefalsefalse
[]falsefalsefalsetruetruefalsetruefalsefalse
0falsefalsefalsefalsefalsefalsetruefalsetrue
1falsefalsefalsetruetruefalsefalsefalsetrue
-1falsefalsefalsetruetruefalsefalsefalsetrue
''falsefalsefalsefalsefalsefalsetruetruefalse
' 'falsefalsefalsetruetruetruefalsefalsefalse
str
falsefalsefalsetruetruetruefalsefalsetrue
[0,1]falsefalsefalsetruetruetruefalsefalsetrue
[0]falsefalsefalsetruetruetruefalsefalsetrue
new Object()falsefalsefalsetruetruefalsefalsefalsefalse

Реализация __x:

js">740550c6b3d2b9ae03e4d220eb08e6e3

Назад

Проверка наличия переменной в javascript

спросил

9 лет, 9 месяцев назад

Изменено 1 год, 9 месяцев назад

Просмотрено 148 тысяч раз

Я знаю, что есть два метода, чтобы определить, существует ли переменная, а не null (false, empty) в javascript:

1) if ( typeof variableName !== 'undefined' && variableName )

2) if ( window.variableName )

какой из них предпочтительнее и почему?

  • JavaScript

4

Переменная объявлена ​​как , если доступ к имени переменной не приведет к ошибке ReferenceError . Выражение typeof variableName !== 'undefined'

будет false только в одном из двух случаев:

  • переменная не объявлена ​​(т.е. в области видимости нет var variableName ), или
  • переменная объявлена ​​и ее значение равно undefined (т. е. значение переменной равно не определено )

В противном случае сравнение оценивается как true .

Если вы действительно хотите проверить, объявлена ​​ли переменная или нет, вам нужно поймать любые ReferenceError , вызванная попытками сослаться на него:

 var barIsDeclared = true;
попробуйте {бар; }
поймать (е) {
    если (e.name == "ReferenceError") {
        barIsDeclared = ложь;
    }
}
 

Если вы просто хотите проверить, является ли значение объявленной переменной ни undefined , ни null , вы можете просто проверить это:

 if (variableName !== undefined && variableName !== null) { .
.. }

Или, что то же самое, с нестрогой проверкой на равенство null :

 if (variableName != null) { ... }
 

И ваш второй пример, и ваше правое выражение в операции && проверяют, является ли значение «ложным», т. е. приводит ли оно к ложному в логическом контексте. Такие значения включают null , false , 0 и пустую строку, не все из которых вы можете отбросить.

6

Важно отметить, что 'undefined' является вполне допустимым значением для хранения переменной. Если вы хотите проверить, существует ли переменная вообще,

 если (window.variableName)
 

является более полной проверкой, так как проверяет, действительно ли переменная была определена. Однако это полезно только в том случае, если переменная гарантированно является объектом! Кроме того, как указывали другие, это также может возвращать false, если значение variableName равно false, 0, '' или null.

Тем не менее, этого обычно недостаточно для наших повседневных целей, поскольку мы часто не хотим иметь неопределенное значение. Таким образом, вы должны сначала проверить, определена ли переменная, а затем подтвердить, что она не является неопределенной, используя оператор typeof, который, как указал Адам, не вернет значение undefined, если переменная действительно не определена.

 если (имя_переменной && typeof имя_переменной !== 'undefined')
 

5

Если вы хотите проверить, определена ли переменная (например, v) и не является ли она нулевой:

 if (typeof v !== 'undefined' && v !== null) {
    // Делаем какую-то операцию
}
 

Если вы хотите проверить все ложные значения, такие как: undefined , null , '' , 0 , false :

 если (v) {
   // Делаем какую-то операцию
}
 

Пишу ответ только потому, что мне не хватает репутации, чтобы прокомментировать принятый ответ от апсилеров . Я согласен с его ответом, но

Если вы действительно хотите проверить, не объявлена ​​ли переменная, вам нужно поймать ReferenceError...

не единственный способ. Можно сделать просто:

 this.hasOwnProperty("bar")
 

для проверки наличия переменной бар объявлен в текущем контексте. (Я не уверен, но вызов hasOwnProperty также может быть более быстрым/эффективным, чем создание исключения) Это работает только для текущего контекста (не для всей текущей области).

2

 если ( typeof имя_переменной !== 'undefined' && имя_переменной )
//// может выдать ошибку, если var вообще не существует
если (окно.имя_переменной)
//// может быть правдой, если var == 0
////дальше зависит от того, что хранится в этой переменной
// если вы ожидаете, что объект будет храниться в этой переменной, возможно
если ( !!окно.имя_переменной )
// может быть правильным способом
лучший способ => посмотреть, что работает для вашего случая
 

0

Я нашел это короче и намного лучше:

 if(varName !== (undefined || null)) { // сделать что-то }
 

1

, если (переменная) может использоваться, если переменная гарантированно является объектом, или если false, 0 и т. д. считаются значениями «по умолчанию» (следовательно, эквивалентными неопределенным или нулевым).

typeof переменная == 'undefined' можно использовать в тех случаях, когда указанный нуль имеет особое значение для неинициализированной переменной или свойства. Эта проверка не выдаст ошибку, и переменная не объявлена.

Вы можете просто сделать if(variableName){console.log("Переменная существует")}

Зарегистрируйтесь или войдите в систему

Зарегистрируйтесь с помощью Google

Зарегистрироваться через Facebook

Зарегистрируйтесь, используя электронную почту и пароль

Опубликовать как гость

Электронная почта

Обязательно, но не отображается

Опубликовать как гость

Электронная почта

Требуется, но не отображается

Решено: проверить, существует ли переменная в JavaScript

Основная проблема с проверкой существования переменной заключается в том, что она может быть медленной.

если (переменная типа !== 'undefined') {
    // переменная определена
} 

Первая строка — оператор if. Он проверяет, не равен ли тип переменной «undefined». Если это не так, то он запускает код внутри фигурных скобок. Этот код просто выводит сообщение о том, что переменная определена.

Содержимое

  • 1 Метод If Exist
  • 2 Переменные и циклы

Метод If Exists

Метод IfExists — это встроенная функция в JavaScript, которая проверяет, выполняется ли заданное условие. Если это так, функция возвращает значение; в противном случае возвращается ноль.

переменные и циклы

В JavaScript переменные объявляются с помощью ключевого слова var, и им могут быть присвоены значения с помощью оператора =. Циклы создаются с помощью оператора for и могут использоваться для повторения набора кода определенное количество раз.

Похожие сообщения:

  • Решено: Добавить минуты к дате
  • Решено: Базовый JavaScript Использовать рекурсию для создания обратного отсчета
  • Решено: Базовый JavaScript Использовать рекурсию для создания диапазона чисел
  • Решено: javascript капитализировать слова
  • Решено: проверить, содержит ли строка только целые цифры.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *