2017-12-17 16 views
0

나는 파이어 폭스에서 탈출 문자열을 시도하는 동안 작동하지 않습니다, 나는 그들이 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

Firefox의 웹 콘솔은 REPL environment으로 이중 근무를하고 window.console은 출력을 덤프합니다. 웹 콘솔에 '"'을 입력하면 해당 문자열이 Javascript 행으로 읽고 평가되어 사용 가능한 것으로 생각되는 양식으로 반환 값을 제공합니다. '"'은 문자열로 평가되므로 Firefox는 그 결과를 문자열 리터럴 인 "\""으로 제공합니다. 하지만 여전히 한 문자 U + 0022 견적 표가 포함되어 있습니다. 당신은 추가 테스트와 함께 자신이를 볼 수 있습니다

» var str = '"' 
⬅ undefined 
» str 
⬅ "\"" 
» str.length 
⬅ 1 
» str.charCodeAt(0) 
⬅ 34 

당신이 console.log()를 사용하는 경우, 다른 한편으로는, 웹 콘솔 로그 메시지로 console.log에게 주어진 객체를 덤프한다. 파이어 폭스는 유용한 로그 메시지를 만드는 것과는 다른 아이디어를 가지고 있습니다. 문자열의 경우 읽기 쉬운 메시지가 코드로 다시 복사 할 수있는 문자열 리터럴보다 낫습니다. 따라서

» console.log(str) 
    "          debugger eval code:1:1 
⬅ undefined 

하단에 undefined이 표시됩니다. 콘솔은 여전히 ​​REPLing 중입니다. " 라인은 대화에 방해가되는 console.log입니다.

+0

지금 받으십시오. 매우 분석적인 답장! 고맙습니다! – danielpanatha