当设置 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\''
。希望对您有所帮助!
我确信我遗漏了一些基本的东西,但我不确定是什么。
这是一些代码:
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\''
。希望对您有所帮助!