JavaScript 转义字符串在 Firefox 开发者工具上不起作用
JavaScript Escaping Strings don’t work on Firefox Developer Tools
当我在 Firefox 上尝试转义字符串时,我注意到转义字符串在 Firefox Developer Tools 上不起作用,除非它们位于 console.log()
或alert()
留言。
例如,如果您在控制台中键入以下消息:
"The man whispered, \"please speak to me.\""
结果将与您输入的内容完全相同:
"The man whispered, \"please speak to me.\""
但是,如果您在 console.log()
中包含消息,则它可以正常工作:
输入:
console.log("The man whispered, \"please speak to me.\"");
输出:
The man whispered, "please speak to me."
我不知道这是某种错误还是我不知道的更深层次的东西,所以我 post 在这里,我希望有人能详细说明。
Firefox 的 Web 控制台作为 REPL environment 和 window.console
转储其输出的地方承担着双重职责。当您在 Web 控制台中键入 '"'
时,它会读取该字符串并将其评估为一行 Javascript,并以它认为您可以使用的形式为您提供 return 值。由于 '"'
求值为字符串,因此 Firefox 将结果作为字符串文字 "\""
提供给您。但它仍然只包含一个字符,U+0022 QUOTATION MARK。您可以通过进一步测试亲眼看到:
» var str = '"'
⬅ undefined
» str
⬅ "\""
» str.length
⬅ 1
» str.charCodeAt(0)
⬅ 34
另一方面,当您使用 console.log()
时,Web 控制台会将提供给 console.log
的对象转储为日志消息。 Firefox 对于什么是有用的日志消息有不同的想法:对于字符串,易于阅读的消息比您可以将其复制回代码中的字符串文字更好。因此,
» console.log(str)
" debugger eval code:1:1
⬅ undefined
注意底部的 undefined
:控制台仍在 REPLing。 "
线路 console.log
打断了您的谈话。
当我在 Firefox 上尝试转义字符串时,我注意到转义字符串在 Firefox Developer Tools 上不起作用,除非它们位于 console.log()
或alert()
留言。
例如,如果您在控制台中键入以下消息:
"The man whispered, \"please speak to me.\""
结果将与您输入的内容完全相同:
"The man whispered, \"please speak to me.\""
但是,如果您在 console.log()
中包含消息,则它可以正常工作:
输入:
console.log("The man whispered, \"please speak to me.\"");
输出:
The man whispered, "please speak to me."
我不知道这是某种错误还是我不知道的更深层次的东西,所以我 post 在这里,我希望有人能详细说明。
Firefox 的 Web 控制台作为 REPL environment 和 window.console
转储其输出的地方承担着双重职责。当您在 Web 控制台中键入 '"'
时,它会读取该字符串并将其评估为一行 Javascript,并以它认为您可以使用的形式为您提供 return 值。由于 '"'
求值为字符串,因此 Firefox 将结果作为字符串文字 "\""
提供给您。但它仍然只包含一个字符,U+0022 QUOTATION MARK。您可以通过进一步测试亲眼看到:
» var str = '"'
⬅ undefined
» str
⬅ "\""
» str.length
⬅ 1
» str.charCodeAt(0)
⬅ 34
另一方面,当您使用 console.log()
时,Web 控制台会将提供给 console.log
的对象转储为日志消息。 Firefox 对于什么是有用的日志消息有不同的想法:对于字符串,易于阅读的消息比您可以将其复制回代码中的字符串文字更好。因此,
» console.log(str)
" debugger eval code:1:1
⬅ undefined
注意底部的 undefined
:控制台仍在 REPLing。 "
线路 console.log
打断了您的谈话。