24.12.2014, 19:40
|
Аспирант
|
|
Регистрация: 21.10.2014
Сообщений: 47
|
|
Условная точка останова рушится, если переменной не существует
Как сделать так, чтобы при отсутствии переменной, которая задана в условии точки останова, отладка не рушилась?
Ie8. Пробовала сравнивать с undefined, но всё равно рушится.
Последний раз редактировалось Risa, 24.12.2014 в 20:06.
|
|
24.12.2014, 23:58
|
Профессор
|
|
Регистрация: 07.11.2013
Сообщений: 1,586
|
|
|
|
25.12.2014, 08:38
|
Аспирант
|
|
Регистрация: 21.10.2014
Сообщений: 47
|
|
Большое спасибо!
|
|
25.12.2014, 13:09
|
Профессор
|
|
Регистрация: 12.12.2012
Сообщений: 1,398
|
|
Risa,
Эмм, try catch мне кажется слишком мощное решение для такой проблемы, к тому же он очень тормозной. Если переменная глобальная, то
if ("имя переменной" in window) {...
Пример:
if (!("some" in window)) {
alert("Нет переменной some!");
}
Последний раз редактировалось tsigel, 25.12.2014 в 14:05.
|
|
25.12.2014, 13:18
|
|
Профессор
|
|
Регистрация: 20.12.2009
Сообщений: 1,714
|
|
Сообщение от tsigel
|
if("some" in window) {
|
- это если "some" существует, а её нет
!("some" in window) && alert("Нет переменной some!");
|
|
26.12.2014, 12:57
|
Аспирант
|
|
Регистрация: 21.10.2014
Сообщений: 47
|
|
tsigel,
Спасибо, но у меня массив (локальная переменная) и если существует 2-й элемент, то мне нужно, чтобы отладчик останавливался на этом месте и я бы смотрела, что происходит дальше. То есть try - catch только в самом отладчике существует (там, где задаётся условие для точки останова), а не в коде.
|
|
26.12.2014, 13:11
|
Профессор
|
|
Регистрация: 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.
|
|
26.12.2014, 13:35
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,577
|
|
if(typeof foo === 'undefined') alert('No "foo" here');
__________________
29375, 35
|
|
26.12.2014, 13:53
|
Аспирант
|
|
Регистрация: 21.10.2014
Сообщений: 47
|
|
Если быть более точной, это свойство объекта.
в одном месте объект obj: this.arr = [1,2,3]
в другом месте obj передаётся в метод и уже в этом методе я делаю точку останова(ie8 f12 сценарий), жму по ней правой клавишей мыши, условие... пишу arr[2] !== undefined && моё условие... сработало, спасибо! Странно, я уже пыталась сделать и там вылетала ошибка. Может, опечаталась тогда. Большое спасибо!
|
|
26.12.2014, 14:05
|
Профессор
|
|
Регистрация: 07.11.2013
Сообщений: 1,586
|
|
Risa,
(1 in arr) && (ваше условие)
|
|
|
|