34

Вопрос по json, javascript – Странное поведение JSON-разбора в js: «Неожиданный токен:»

Как показано вэто jsfiddleЕсли у вас есть файл JS и вы создаете объект JSON без его использования, он ведет себя по-разному в зависимости от того, заключены ли ключи (члены) в кавычки или нет.

действительный код:{ a: 1};
неверный код:{ "a": 1 };

То, что вы получите, это сообщение об ошибке (в Chrome, отличается для FF / IE, но все равно не работает по синтаксису)

Uncaught SyntaxError: Unexpected token :

но если вы используете объект каким-либо образом, например:alert({ "a": 1 }); все в порядке снова.

Почему это происходит?

3 ответа
3

Я только что понял, чем при загрузке JSON через

requireError: User Rate Limit Exceeded.json я получаю эту ошибку Переименование файла вbla.jsonError: User Rate Limit Exceeded

2

Эта ошибка может появиться при выполнении вызова jQuery AJAX с использ

ованиемjsonp когдаjsonpError: User Rate Limit Exceededjson

$.ajax({
     dataType: 'json', // try using json rather than json p
     ...
});
60

Заявление: { a: 1 };

Заявление:

{ a: 1 };

являетсяnotError: User Rate Limit Exceeded

Это:

{ "a": 1 };

является синтаксической ошибкой, потому что она просто не разбирается. Цитируемое "а" запускает выражение выражения внутри блока, но затем следующий токен после строки представляет собой двоеточие, и нет формы выражения, которая выглядит как выражение, за которым следует двоеточие.

Сейчас:

var x = { "a": 1 };

работает, потому что & quot; {& quot; не интерпретируется как начало оператора блока. Это утверждение начинается сvarтак что это объявление переменной. В выражении с правой стороны от & quot; = & quot; маркер, единственное, что & quot; {& quot; может означать начало литерала объекта. Аналогично обратите внимание, что:

({ "a": 1 });

все в порядке, потому что открывающая скобка заставляет синтаксический анализатор ожидать вложенное подвыражение, так что опять же, & quot; {& quot; однозначно означает, что это начало литерала объекта.

Error: User Rate Limit Exceeded

от karnyj

Error: User Rate Limit Exceeded

от karnyj

Error: User Rate Limit Exceeded

от 

Error: User Rate Limit Exceeded

от 

Error: User Rate Limit Exceeded

от karnyj

Похожие вопросы