我确信我错过了一些基本的东西,但我不确定是什么。
以下是一些代码:
var carColor = JSON.stringify(this.car.color);
document.getElementById('id').innerHTML = carColor; // displays: "blue"
console.log(carColor); // displays: '\'blue\''
我假设我可以使用一个函数来删除该文本中的斜杠,但有没有更好的方法让该变量等于颜色名称?
答案 0 :(得分:2)
JSON.stringify()
的行为是标准化的,不会添加您正在观察的斜杠。
但是,console.log()
的准确行为并非跨平台标准化,并且可能会有所不同。拟议的规范正在开发中,但仍处于早期阶段(我仍不清楚它是否会涵盖这一细节)。你不能依赖它的输出是完全一致的。
在某些平台上,字符串可能会在显示之前自动重新转义,以便读者可以清楚地知道任何特殊字符(假设谁是开发人员,而不是最终用户会感到困惑)。当字符串已经使用JSON.stringify()
进行转义时,这种双重转义会导致输出中显示反斜杠,正如您所经历的那样。
您可以使用另一种显示文本的方法,例如alert()
来验证字符串的实际内容。
答案 1 :(得分:2)
'\'是允许在字符串中使用保留字符的分隔符。
可在此处找到完整列表: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\''
。由于只有值是JSONified,因此它变为字符串'blue'
,其中包含“'
并将写入'\'blue\''
。希望有所帮助!