Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.08.2012, 06:19
Профессор
Отправить личное сообщение для Почемучкин Посмотреть профиль Найти все сообщения от Почемучкин
 
Регистрация: 11.05.2011
Сообщений: 241

Почему alert не срабатывает для несуществующей переменной?
Почему alert не срабатывает для несуществующей переменной?
javascript: alert(qetgeeqqre);

Вставьте это в адресную строку и запустите.

Насколько мне помнится, раньше это работало и выдавало undefined в качестве результата в окошке.
Firefox 13.0.1 - может произошли какие-то изменения в безопасности?
Сейчас работает только если предварительно описать переменную:
javascript: var qetgeeqqre; alert(qetgeeqqre);

Покажет "undefined" как и ожидается.
Ответить с цитированием
  #2 (permalink)  
Старый 15.08.2012, 08:34
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Странно Вам помнится.
alert(qetgeeqqre);
Вполне ожидаемая ошибка
Цитата:
error: Undefined variable: qetgeeqqre
. Зато если определить переменную, но не задать ей значения, она будет иметь значением undefined.
var qetgeeqqre; alert(qetgeeqqre);
Ответить с цитированием
  #3 (permalink)  
Старый 15.08.2012, 09:26
Профессор
Отправить личное сообщение для Почемучкин Посмотреть профиль Найти все сообщения от Почемучкин
 
Регистрация: 11.05.2011
Сообщений: 241

Возможно я перепутал с несуществующими свойствами DOM-объектов. Но мне кажется, и переменные в прежних версиях firefox можно было так проверять.

Хорошо, а как же узнать - была ли объявлена переменная или нет (существует ли она)?
Ответить с цитированием
  #4 (permalink)  
Старый 15.08.2012, 09:32
Аватар для B@rmaley.e><e
⊞ Развернуть
Отправить личное сообщение для B@rmaley.e><e Посмотреть профиль Найти все сообщения от B@rmaley.e><e
 
Регистрация: 11.01.2010
Сообщений: 1,810

Если нужно проверить существование глобальной переменной — то так:
var a;
alert('a' in window) // объявлена
alert('b' in window) // не объявлена

Но в случае локальных переменных так уже не получится
(function () {
  var a;
  alert('a' in window)
  alert('b' in window)
})()

В общем случае, достаточно будет проверки на undefined, т.к. вряд ли для Вас принципиально, объявлена ли переменная или же инициализирована undefined'ом.
alert(typeof someVariable === 'undefined')
Ответить с цитированием
  #5 (permalink)  
Старый 15.08.2012, 09:40
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,115

Сообщение от Почемучкин
а как же узнать - была ли объявлена переменная или нет (существует ли она)?
Как вариант...

var b;
var c=1;
alert(typeof a);
alert(typeof b);
alert(typeof c);
Ответить с цитированием
  #6 (permalink)  
Старый 15.08.2012, 09:53
Профессор
Отправить личное сообщение для Severtain Посмотреть профиль Найти все сообщения от Severtain
 
Регистрация: 25.04.2011
Сообщений: 277

Почемучкин,
Все правильно! Переменной нету, оно и не должно возвращать другое значение! Благодаря этому и определяем существование переменной, объекта!
Ответить с цитированием
  #7 (permalink)  
Старый 15.08.2012, 11:23
Профессор
Отправить личное сообщение для Почемучкин Посмотреть профиль Найти все сообщения от Почемучкин
 
Регистрация: 11.05.2011
Сообщений: 241

Сообщение от Severtain Посмотреть сообщение
Почемучкин,
Все правильно! Переменной нету, оно и не должно возвращать другое значение! Благодаря этому и определяем существование переменной, объекта!
В том и проблема была, что скрипт ничего не возвращал, а вместо этого прерывал работу

Спасибо ответившим!
Ответить с цитированием
  #8 (permalink)  
Старый 15.08.2012, 11:39
Профессор
Отправить личное сообщение для Почемучкин Посмотреть профиль Найти все сообщения от Почемучкин
 
Регистрация: 11.05.2011
Сообщений: 241

Еще вопрос: можно ли удалить переменную так, чтобы ни следа не осталось? То есть чтобы она стала undefined и необъявленной при этом?
Ответить с цитированием
  #9 (permalink)  
Старый 15.08.2012, 11:41
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,115

Сообщение от Почемучкин
и необъявленной при этом?
Если переменная объявлена как

var val;


она останется таковой. Т.е. "удалить объявление" переменной нельзя.
Ответить с цитированием
  #10 (permalink)  
Старый 15.08.2012, 11:52
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,115

Сообщение от Почемучкин
можно ли удалить переменную
http://javascript.ru/delete
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
максимальная длина переменной для js функции progger Общие вопросы Javascript 5 06.09.2010 15:14
Почему "display:block" не работает для <A> в ИЕ 6,7 и Maxthon? warobushek (X)HTML/CSS 2 29.04.2010 07:51
Передача переменной в функцию для теста со случайным выводом вопросов rockdancer Общие вопросы Javascript 1 06.02.2010 23:13
не срабатывает onchange для <input type="text" thunder2 Events/DOM/Window 5 14.01.2010 10:37
UI Dialog как победить двойной вызов??? xela1980 jQuery 3 19.12.2009 11:51