. . . 누군가 나에게 이런 질문을 했습니다. . 나도 잘 모르겠어
으아악위 내용은 정상적으로 실행될 수 있습니다. . 결과는 {test: "这是一个对象, 里面有 test 字段"}
하지만 만약 test
字段里面加上 双引号
아주 이상한 문제가 있다면...
위 오류가 보고되는 것은 정상적인 현상입니다.
지금 가입하세요转义符
결과는 여전히 오류입니다. 이 문자열을 직접 입력해도 그림과 같이 이스케이프된 문자열이 정상적으로 표시될 수 있습니다.
놀라운 점은. . 실수로 \
作为转义符而不是 를 사용하여 이런 코드를 작성했습니다. . . 결과는 정상입니다.
JSON.parse의 실행 프로세스가 실제로 두 번의 이스케이프를 거치기 때문일 것입니다.
Once는 문자열 자체의 이스케이프입니다.
으아악은(는)
로 변환됩니다. 으아악(이 문자열은 브라우저의 명령줄에 직접 입력할 수 있습니다)
Once는 문자열을 객체로 변환할 때의 이스케이프입니다:
""는 """의 이스케이프 문자로 간주되어 개체로 올바르게 변환됩니다.
""이 하나만 있는 경우 문자열을 객체로 변환할 때 테스트 필드 값에 큰따옴표 두 쌍이 있으며 오류가 보고됩니다.
ES5 사양의 구문 분석 방법을 다시 확인했습니다.
첫 번째 단계는 해당 문자열 자체를 이스케이프 처리하는 것입니다
두 번째 단계는 문자열을 객체로 변환할 때의 이스케이프에 해당합니다