为什么我在野生动物园和Chrome中使用JSON.stringify来对JSON进行字符串化得到不同的结果?

qiu*_*tao 0 javascript json

我只是单纯地使用JSON.stringify({"a": "123"})stringify一个json

在chrome中,"分号将不会被转义,它将回显

JSON.stringify({"a": "123"})
"{"a":"123"}"
Run Code Online (Sandbox Code Playgroud)

但是如果我在野生动物园中使用相同的代码,"分号将被转义,就像这样

JSON.stringify({"a": "123"})
"{\"a\":\"123\"}"
Run Code Online (Sandbox Code Playgroud)

我想知道为什么chrome和safari产生不同结果的原因

dec*_*eze 5

JSON.stringify与控制台无关,它与控制台显示值文字的方式有关。

Safari选择使整行成为有效文字。也就是说,您可以将整行复制粘贴到Javascript源代码中,这将是有效的。

Safari显示“ foo \”栏

Chrome浏览器选择仅在线条周围添加装饰性""标记以表示它是字符串值,但仅按原样显示字符串内容,而不使其成为有效的文字。

Chrome显示“ foo”栏

Safari的方法的优点是您可以将值复制粘贴为代码,而Chrome的优点是您可以读取字符串的内容而无需根据字符串转义规则在脑海中进行解析。