当设置 JSON.stringify 值等于变量时,它会在前面添加 '\',在末尾添加 \'

When setting JSON.stringify value equal to variable it adds '\' to the front and \' to the end

我确信我遗漏了一些基本的东西,但我不确定是什么。

这是一些代码:

  var carColor = JSON.stringify(this.car.color);

  document.getElementById('id').innerHTML = carColor; // displays: "blue"
  console.log(carColor); // displays: '\'blue\''

我假设我可以使用一个函数从该文本中删除斜杠,但是有没有更好的方法让该变量等于颜色名称?

JSON.stringify() 的行为是标准化的,不会添加您正在观察的斜杠。

但是,console.log() 的精确行为并未跨平台标准化,并且可能会有所不同。一个拟议的规范正在开发中,但仍处于非常早期的阶段(我仍然不清楚它是否会涵盖这个细节)。您不能指望其输出完全一致。

在某些平台上,字符串在显示之前可能会自动 re-escaped,因此任何特殊字符对于 reader(假定为开发人员,而不是最终用户)来说都是清楚的用户会感到困惑)。当字符串已使用 JSON.stringify() 进行转义时,此 double-escaping 会导致在输出中显示反斜杠,如您所见。

您可以使用另一种显示文本的方法,例如 alert() 来验证字符串的实际内容。

“\”是允许在字符串中使用保留字符的分隔符。

可在此处找到完整列表:http://www.w3schools.com/js/js_strings.asp

基本上,如果我有这样的字符串: 'He said 'hi!''、javascript 会将其解释为字符串 'he said ' 然后尝试执行代码 hi! 并遇到问题。要告诉 javascript 你想在字符串中加上单引号,你需要写 \' 所以这个字符串现在变成 'He said \'hi!\''

在你的例子中,你有一个 color 变量被分配了字符串 'blue'。 JSON 旨在运送物品,因此通常您会有一个 JSON 字符串 'color: \'blue\''。由于只有值被 JSON 化,它变成字符串 'blue',其中包含 '' 并且将被写为 '\'blue\''。希望对您有所帮助!