Это `.length 'возвращается как неопределенное
У него не обязательно будет свойство length
, если только у него нет массива или другого объекта. Например:
var json = '{"foo": "Value of foo"}';
var obj = eval('(' + json + ')');
alert(obj.foo); // alerts "value of foo"
alert(obj.length); // alerts "undefined", there's no `length` in `obj`
Живой пример
Не по теме : использование eval
для десериализации текста JSON может быть проблемой безопасности, если только вы не можете однозначно доверять источнику текста JSON (например, это ваш собственный сервер и вы подключение через SSL), поскольку eval
не анализирует JSON, он анализирует и выполняет код JavaScript. (Добавление скобок не очень помогает.) Вы можете получить альтернативы использованию eval
на странице 1010 * Github Дугласа Крокфорда (он является изобретателем JSON). Последнее, что я проверил, есть три варианта, два из которых не используют eval
вообще; смотрите README внизу страницы для подробностей.