IE8 Javascript: «2» является нулем или не является объектом - PullRequest
2 голосов
/ 07 декабря 2010

Я получаю бессмысленное сообщение об ошибке в IE8, скажите, что константа '2' равна нулю или не является объектом. Строка кода:

if (! localtree[idx][2]) {

Я также пытался кодировать это так:

if (localtree[idx][2] == 0) {

Значение в массиве в этом месте всегда равно нулю (на данный момент).

Как IE8 может думать, что число 2 равно нулю? Я озадачен!

Точная ошибка:

Message: '2' is null or not an object

Кто-нибудь видел это?

РЕДАКТИРОВАТЬ: Это очень вводящее в заблуждение сообщение об ошибке. См. Мой ответ ниже, что на самом деле пошло не так.

Ответы [ 2 ]

5 голосов
/ 08 декабря 2010

Это очень запутанное сообщение об ошибке.Оказалось, что я шагнул один элемент за конец массива.'idx' ссылался на несуществующее значение, которое я пытался трактовать как ссылку на массив (с [2]).

Вместо того, чтобы сказать мне, что '2' было нулевым, он должен был сказать'localtree [idx]' был нулевым.

Основной причиной этого было то, что у меня была запятая, в которой я определил массив, что привело к дополнительному нулевому значению в массиве.В Firefox конечные запятые игнорируются (как в Perl), но в IE они значимы.

2 голосов
/ 08 декабря 2010

константа '2' равна нулю или не является объектом

if (! localtree[idx][2]) {

JavaScript не имеет констант, по крайней мере пока. И вы проверяете не число, а член массива, т. Е. Переменную с индексным номером 2 объекта localtree[idx] (где idx должна содержать строку для ссылки на свойство объекта или порядковый номер ссылаться на массив).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...