Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Условная точка останова рушится, если переменной не существует (https://javascript.ru/forum/misc/52573-uslovnaya-tochka-ostanova-rushitsya-esli-peremennojj-ne-sushhestvuet.html)

Risa 24.12.2014 19:40

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

Rise 24.12.2014 23:58

Risa, try..catch

Risa 25.12.2014 08:38

Большое спасибо!

tsigel 25.12.2014 13:09

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


Пример:

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

Malleys 25.12.2014 13:18

Цитата:

Сообщение от tsigel (Сообщение 348264)
if("some" in window) {

- это если "some" существует, а её нет
!("some" in window) && alert("Нет переменной some!");

Risa 26.12.2014 12:57

tsigel,
Спасибо, но у меня массив (локальная переменная) и если существует 2-й элемент, то мне нужно, чтобы отладчик останавливался на этом месте и я бы смотрела, что происходит дальше. То есть try - catch только в самом отладчике существует (там, где задаётся условие для точки останова), а не в коде.

tsigel 26.12.2014 13:11

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

Aetae 26.12.2014 13:35

if(typeof foo === 'undefined') alert('No "foo" here');

Risa 26.12.2014 13:53

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


Часовой пояс GMT +3, время: 09:29.