当我在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."
我不知道这是不是某种错误,或者有更深层次的东西我不知道,所以我在这里发布,希望有人可以详细说明。
答案 0 :(得分:2)
Firefox的Web控制台正在将REPL environment和window.console
转储其输出的地方作为双重任务。当您在Web控制台中键入'"'
时,它会读取并评估该字符串作为一行Javascript,并以您认为可以使用的形式提供返回值。由于'"'
评估为字符串,因此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
侵入了您的对话。