Нет, между "
и '
нет никакой разницы в кавычках, кроме того, что вы можете использовать "
, не экранируя его внутри строки, заключенной в '
, и наоборот. Но я не думаю, что (название вашего вопроса) на самом деле как-то связано с проблемой, с которой вы столкнулись.
Если вы хотите убедиться, что в строке нет символов со значением 0 или 255, вы можете сделать это следующим образом:
data = data.replace(/[\u0000\u00ff]/g, '');
... прежде чем передать его на eval
. И это звучит так, как будто вы, возможно, захотите это сделать, поскольку ваша вещь говорит, что она получила 37 байтов, но длина строки составляет всего 36 символов и не использует никаких символов, требующих два байта (или, возможно, в конце просто пробел. не вижу).
Не по теме : Лучше не использовать eval
для десериализации JSON. Вместо этого используйте библиотеку, которая обрабатывает это напрямую. У Крокфорда есть две разные не eval
библиотеки на его странице github , одна (json_parse.js), которая использует синтаксический анализатор с рекурсивным спуском, и другая (json_parse_state.js), которая использует конечный автомат. Если вы действительно, действительно хотите использовать eval
для анализа JSON, взгляните на его реализацию в json2.js, которая, по крайней мере, делает несколько шагов, чтобы отсеять вредоносные файлы.
Не по теме 2 : Re
где data = { "cmd": "setname", "params": "ok" }
(я полагаю, с кавычками, потому что typeof (data) = строка).
Мы используем кавычки только для кавычек строковых литералов в коде; нет никаких кавычек вокруг фактических строковых данных в памяти. Если я сделаю это:
var foo = "bar";
... строка, на которую указывает foo
, целиком состоит из символов b, a и r. Там нет кавычек; кавычки присутствуют только в коде, чтобы сообщить парсеру, что ниже следует строковый литерал.