Javascript.RU

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

Условная точка останова рушится, если переменной не существует
Как сделать так, чтобы при отсутствии переменной, которая задана в условии точки останова, отладка не рушилась?
Ie8. Пробовала сравнивать с undefined, но всё равно рушится.

Последний раз редактировалось Risa, 24.12.2014 в 20:06.
Ответить с цитированием
  #2 (permalink)  
Старый 24.12.2014, 23:58
Профессор
Отправить личное сообщение для Rise Посмотреть профиль Найти все сообщения от Rise
 
Регистрация: 07.11.2013
Сообщений: 458

Risa, try..catch
Ответить с цитированием
  #3 (permalink)  
Старый 25.12.2014, 08:38
Аспирант
Отправить личное сообщение для Risa Посмотреть профиль Найти все сообщения от Risa
 
Регистрация: 21.10.2014
Сообщений: 47

Большое спасибо!
Ответить с цитированием
  #4 (permalink)  
Старый 25.12.2014, 13:09
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

Risa,
Эмм, try catch мне кажется слишком мощное решение для такой проблемы, к тому же он очень тормозной. Если переменная глобальная, то
if ("имя переменной" in window) {...


Пример:

if (!("some" in window)) {
     alert("Нет переменной some!");
  }

Последний раз редактировалось tsigel, 25.12.2014 в 14:05.
Ответить с цитированием
  #5 (permalink)  
Старый 25.12.2014, 13:18
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

Сообщение от tsigel Посмотреть сообщение
if("some" in window) {
- это если "some" существует, а её нет
!("some" in window) && alert("Нет переменной some!");
Ответить с цитированием
  #6 (permalink)  
Старый 26.12.2014, 12:57
Аспирант
Отправить личное сообщение для Risa Посмотреть профиль Найти все сообщения от Risa
 
Регистрация: 21.10.2014
Сообщений: 47

tsigel,
Спасибо, но у меня массив (локальная переменная) и если существует 2-й элемент, то мне нужно, чтобы отладчик останавливался на этом месте и я бы смотрела, что происходит дальше. То есть try - catch только в самом отладчике существует (там, где задаётся условие для точки останова), а не в коде.
Ответить с цитированием
  #7 (permalink)  
Старый 26.12.2014, 13:11
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

Проблема в том чтобы проверить наличие элемента в массиве или самого массива?
var arr = [1,2,3]
if (arr[2] !== undefined) alert("элемент есть!");
if (arr[3] === undefined) alert("элемента нет!");

Последний раз редактировалось tsigel, 26.12.2014 в 13:13.
Ответить с цитированием
  #8 (permalink)  
Старый 26.12.2014, 13:35
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,589

if(typeof foo === 'undefined') alert('No "foo" here');
__________________
29375, 35
Ответить с цитированием
  #9 (permalink)  
Старый 26.12.2014, 13:53
Аспирант
Отправить личное сообщение для Risa Посмотреть профиль Найти все сообщения от Risa
 
Регистрация: 21.10.2014
Сообщений: 47

Если быть более точной, это свойство объекта.
в одном месте объект obj: this.arr = [1,2,3]
в другом месте obj передаётся в метод и уже в этом методе я делаю точку останова(ie8 f12 сценарий), жму по ней правой клавишей мыши, условие... пишу arr[2] !== undefined && моё условие... сработало, спасибо! Странно, я уже пыталась сделать и там вылетала ошибка. Может, опечаталась тогда. Большое спасибо!
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как обратиться к свойству объекта по имени если оно хранится в переменной xaknik Общие вопросы Javascript 2 25.04.2012 23:12
Модуль для работы с модулями JSprog Ваши сайты и скрипты 29 02.09.2009 13:31