2017-12-17 18 views
0

私は、Firefoxのエスケープ文字列をしようとしたときに動作しない、私は彼らがconsole.log()またはalert()メッセージ内にある場合を除きエスケープ文字列は、Firefoxの開発者ツールに動作しないことに気づきました。JavaScriptのエスケープ文字列は、Firefoxの開発者ツール

"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

Firefoxのウェブコンソールは、REPL environmentとして、そしてwindow.consoleの出力をダンプする場所として二重課税を引き出しています。 Webコンソールに'"'と入力すると、その文字列がJavascriptの行として読み込まれ、評価され、使用できると考えられる形式で戻り値が返されます。 '"'は文字列に評価されるので、Firefoxは結果を文字列リテラルの"\""として返します。しかしそれはまだ1文字、U + 0022見積もりマークしか含んでいません。あなたは、さらにテストを自分のためにこれを見ることができます:

» 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です。

+0

今すぐ取得します。非常に分析的な返信!ありがとうございました! – danielpanatha

関連する問題