Ошибка «Невозможно вызвать toString для неопределенного», но переменная определена - PullRequest
1 голос
/ 13 июля 2011

В этом куске Javascript

creds = cp[0];
data[creds.toString()] = cp[1]; // data is an object

Chrome выдает ошибку TypeError: Cannot call method toString of undefined во второй строке. Тем не менее, я подтвердил с помощью отладчика, что значение creds в этот момент является числом 1400.

Что происходит?

Ответы [ 2 ]

1 голос
/ 13 июля 2011

Вы должны быть очень осторожны при использовании цикла for in для массива. Вместо этого используйте обычный цикл.

Массив cpl содержит не только данные, но и функции, поэтому третьим cp в цикле является функция. Вот почему creds превратился в неопределенное.

Эта ссылка имеет хорошее объяснение: Почему использование «for ... in» с итерацией массива - плохая идея?

0 голосов
/ 13 июля 2011

Javascript не нуждается в типе переменной, поэтому сделайте это, удалив toString().

Кстати, я не уверен, что вы можете назвать toString() для примитивного типа как int

...