Вход | Регистрация



Кто знает JavaScript, объясните нубу как узнать существует ли переменная?

Кто знает JavaScript, объясните нубу как узнать существует ли переменная?
Я
   Чейз
 
07.12.17 - 17:18
Кто знает JavaScript, объясните нубу как узнать существует ли переменная?
Только без Попытка - Исключение, потому что это плохо.
Решил выучить жаваскрипт, но столкнулся с такой проблемой. В интернете пишут все неправильные ответы. Может кто уже находил как это правильнее всего сделать?
 
 
   vde69
 
Модератор
1 - 07.12.17 - 17:20
я не силен в яве, но сдается мне, что без попытки ни как...
   Чейз
 
2 - 07.12.17 - 17:23
(1) Я тоже склоняюсь к этому выводу. Но опыт 1С говорит что это некрасиво, и должен быть нормальный способ.
   Numerus Mikhail
 
3 - 07.12.17 - 17:23
Что значит существует ли переменная?
Ты же код пишешь, и так должен знать, есть она или нет
   qsunnx
 
4 - 07.12.17 - 17:25
window.someVariable || false

Если ищешь глобально
   Чейз
 
5 - 07.12.17 - 17:26
(3) Наверное и значение переменной тоже должен я знать, раз пишу код? Но нет, в реальной жизни все не так.
   Numerus Mikhail
 
6 - 07.12.17 - 17:28
(5) Значение знать не должен, да и это тут не при чем.
   DexterMorgan
 
7 - 07.12.17 - 17:28
(5) я тупой 1сник, но вроде как в яве нужно явно объявлять переменные, не?
   Чейз
 
8 - 07.12.17 - 17:29
(4) Спасибо!!! Хрен бы я догадался, да и вообще кто-то.
Темку можно закрыть
   qsunnx
 
9 - 07.12.17 - 17:29
var someObj = { "notNull" : "12" };
someObj["null"] || false

Так по объекту можно к примеру
   Vangiks
 
10 - 07.12.17 - 17:29
Есть только 3 сравнения с null и undefined дающие TRUE:

undefined == undefined;
null == null;
undefined == null;
Любые другие комбинации -  FALSE

Соответственно:

if (GlobalObj != undefined) {...}           GlobalObj = ^[ undefined | null ]

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

На StackOverFlow. Такое не подходит?
 
 Рекламное место пустует
   v77
 
11 - 07.12.17 - 17:30
в node.js такое работает

if (typeof someVar == "undefined")
   Asmody
 
12 - 07.12.17 - 17:30
обращение к undeclared однозначно бросает Reference Error.
typeof(undeclared) === "undefined"

но
var decl;
typeof(decl) === "undefined"
decl === undeclared
   Чейз
 
13 - 07.12.17 - 17:34
(8)+
Не, щас проверил, работает только на глобальных переменках. А на переменных внутри функции не работает.
К какому объекту привязываются переменные внутри функций?
   Чейз
 
14 - 07.12.17 - 17:37
(10) Нет
(11) если в someVar находится undefined, то твое условие ошибочно выдаст истину. Так что тоже не подходит
   qsunnx
 
15 - 07.12.17 - 17:41
(13) Если ф-ция - это конструктор, тогда к объекту через this и new соответственно.
А иначе переменная остается в области видимости функции, к ней подхода не найти извне
   Чейз
 
16 - 07.12.17 - 17:44
(15) извне и не надо. Надо изнутри проверить есть ли она вообще, не используя попытку-исключение
   Asmody
 
17 - 07.12.17 - 17:59
приучайся к use strict
   qsunnx
 
18 - 07.12.17 - 18:03
(16) Хм...
Ну есть например такой вариант:
var a1 = typeof(neededVar); // == 'undefined'
var neededVar = 5;

if a1 != typeof(neededVar) {

}
   Чейз
 
19 - 07.12.17 - 19:03
(18) зачем это?
   Сияющий в темноте
 
20 - 07.12.17 - 20:25
Если JavaScript в браузере, то все глобальные переменные - это ключи объекта window, а локальные - можно через функции получить.
   Зума2
 
21 - 11.12.17 - 13:20
(0) единственный способ проверки существования переменной без всяких попыток и исключений - это проверить такое условие:

someVariable in this

Пользуйтесь на здоровье.
   H A D G E H O G s
 
22 - 11.12.17 - 14:58
Как хорошо, что в нормальных ЯП такие вопросы возникают только при работе со структурами.
   mingw
 
23 - 11.12.17 - 15:15
(22) Дело не в нормальности ЯП. А в нормальности использующих.
   Вафель
 
24 - 11.12.17 - 15:16
но зачем вообще такая проверка нужна? или ТС куда-нибудь в фейсбук устраивается и такой вот каверзный вопрос на собеседовании


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует