|
Кто знает JavaScript, объясните нубу как узнать существует ли переменная? | ☑ | ||
---|---|---|---|---|
0
Чейз
07.12.17
✎
17:18
|
Кто знает JavaScript, объясните нубу как узнать существует ли переменная?
Только без Попытка - Исключение, потому что это плохо. Решил выучить жаваскрипт, но столкнулся с такой проблемой. В интернете пишут все неправильные ответы. Может кто уже находил как это правильнее всего сделать? |
|||
1
vde69
модератор
07.12.17
✎
17:20
|
я не силен в яве, но сдается мне, что без попытки ни как...
|
|||
2
Чейз
07.12.17
✎
17:23
|
(1) Я тоже склоняюсь к этому выводу. Но опыт 1С говорит что это некрасиво, и должен быть нормальный способ.
|
|||
3
Numerus Mikhail
07.12.17
✎
17:23
|
Что значит существует ли переменная?
Ты же код пишешь, и так должен знать, есть она или нет |
|||
4
qsunnx
07.12.17
✎
17:25
|
window.someVariable || false
Если ищешь глобально |
|||
5
Чейз
07.12.17
✎
17:26
|
(3) Наверное и значение переменной тоже должен я знать, раз пишу код? Но нет, в реальной жизни все не так.
|
|||
6
Numerus Mikhail
07.12.17
✎
17:28
|
(5) Значение знать не должен, да и это тут не при чем.
|
|||
7
DexterMorgan
07.12.17
✎
17:28
|
(5) я тупой 1сник, но вроде как в яве нужно явно объявлять переменные, не?
|
|||
8
Чейз
07.12.17
✎
17:29
|
(4) Спасибо!!! Хрен бы я догадался, да и вообще кто-то.
Темку можно закрыть |
|||
9
qsunnx
07.12.17
✎
17:29
|
var someObj = { "notNull" : "12" };
someObj["null"] || false Так по объекту можно к примеру |
|||
10
Vangiks
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. Такое не подходит? |
|||
11
v77
07.12.17
✎
17:30
|
в node.js такое работает
if (typeof someVar == "undefined") |
|||
12
Asmody
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, то твое условие ошибочно выдаст истину. Так что тоже не подходит |
|||
15
qsunnx
07.12.17
✎
17:41
|
(13) Если ф-ция - это конструктор, тогда к объекту через this и new соответственно.
А иначе переменная остается в области видимости функции, к ней подхода не найти извне |
|||
16
Чейз
07.12.17
✎
17:44
|
(15) извне и не надо. Надо изнутри проверить есть ли она вообще, не используя попытку-исключение
|
|||
17
Asmody
07.12.17
✎
17:59
|
приучайся к use strict
|
|||
18
qsunnx
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, а локальные - можно через функции получить.
|
|||
21
Зума2
11.12.17
✎
13:20
|
(0) единственный способ проверки существования переменной без всяких попыток и исключений - это проверить такое условие:
someVariable in this Пользуйтесь на здоровье. |
|||
22
H A D G E H O G s
11.12.17
✎
14:58
|
Как хорошо, что в нормальных ЯП такие вопросы возникают только при работе со структурами.
|
|||
23
mingw
11.12.17
✎
15:15
|
(22) Дело не в нормальности ЯП. А в нормальности использующих.
|
|||
24
Вафель
11.12.17
✎
15:16
|
но зачем вообще такая проверка нужна? или ТС куда-нибудь в фейсбук устраивается и такой вот каверзный вопрос на собеседовании
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |