JavaScript Escaping Strings不适用于Firefox Developer Tools

时间:2017-12-17 04:16:50

标签: javascript firefox escaping 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."

我不知道这是不是某种错误,或者有更深层次的东西我不知道,所以我在这里发布,希望有人可以详细说明。

1 个答案:

答案 0 :(得分:2)

Firefox的Web控制台正在将REPL environmentwindow.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侵入了您的对话。