Задать вопрос
@Dubrovin

Можно ли написать функцию isset в javascript?

В некоторых участках кода есть потребность проверять наличие переменной, чтобы не крашилось приложение с фатальной ошибкой myVar is not defined:

( 'undefined' !== typeof myVar ) && ( null !== myVar )

В данном примере код заходит в первое условие, в котором переменная myVar стоит после оператора typeof, фатальной ошибки не происходит
Я хочу сделать функцию-обёртку над этим условием, вот таким способом:
isset: ( variable ) => {
	return ( 'undefined' !== typeof ( variable ) ) && ( null !== variable );
},

Далее, если myVar не определена, то вызов isset( myVar ) крашит приложение с ошибкой myVar is not defined.
Что я делаю не так и можно ли реализовать такую обёртку? Или есть более красивое решение?
  • Вопрос задан
  • 2652 просмотра
Подписаться 3 Простой Комментировать
Решения вопроса 1
@Dubrovin Автор вопроса
В общем нашёл решение сам, оно оказалось достаточно простым:
JS для глобальных переменных, которые не определены будет вызывать ошибку myVar is not defined, но если написать в коде window.myVar, то ошибки не будет
Конкретно в моём примере под WordPress нужно было, чтобы скрипт получал url для ajax запроса. В админке это window.ajaxurl, а во фронте k.ajaxurl, код выглядит следующим образом:
let url = window.ajaxurl || k.ajaxurl;
Если мы в админке, то url будет равен ajaxurl, если мы во фронте, то k.ajaxurl
Ответ написан
Пригласить эксперта
Ответы на вопрос 5
"myVar is not defined" - ошибка говорит о том, что такая переменная в принципе не была объявлена. А делать переменную свойством глобального объекта - это плохая практика. Всё можно написать без использования глобальных переменных.
Ответ написан
Xuxicheta
@Xuxicheta
инженер
Оберните код, где будет использоваться переменная в try
Например
try {
  unknownVar
} catch (e) {
 if (e instanceof ReferenceError) {
   console.log('Переменная unknownVar не определена')
 }
}
Ответ написан
Такая проверка выполняется проще: myVar != null
Ответ написан
Adamos
@Adamos
typeof ( variable )
Скобки уберите.
Ответ написан
AlekseyArh
@AlekseyArh
Кибер существо
javascript isset

// Проверяем ключи
let test = {
  a: {
    b: [0, 1]
  }
};

console.log(test.isset('a.b'))   // true
console.log(test.isset('a.b.1')) // true
console.log(test.isset('a.b.5')) // false
console.log(test.isset('a.c'))   // false
console.log('abv'.isset('0')) // true
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы