programing

왜 이 "Hello, World!" 자바스크립트 코드 조각이 허용 가능한 프로그램 명령어로 인식됩니까?

lastmoon 2023. 7. 26. 22:19
반응형

왜 이 "Hello, World!" 자바스크립트 코드 조각이 허용 가능한 프로그램 명령어로 인식됩니까?

최근 한 동료가 다음 자바스크립트 코드 조각을 보여주었습니다.

greet = "‮".toString.bind("hello world!")

이것을 개발자 콘솔에 붙여넣고 실행하면 "Hello, World!" 메시지가 인쇄됩니다.

>> console.log(greet())
hello, world!

또 다른 흥미로운 점은 같은 것을 붙이면greetNode.js REPL 내부의 코드는 자동으로 "읽기 가능한" 형식으로 변환됩니다.

이것은 어떻게 작동합니까?브라우저에서 이 동작이 가능한 이유와 Node.js가 자동으로 포맷하는 이유는 무엇입니까?

실제 코드는 다음과 같습니다.

greet = "...".toString.bind("hello world!")

어디서...문자열 리터럴에는 바이트가 있습니다.E2 80 AE오른쪽에서 왼쪽으로 재정의하는 유니코드 문자로, 유니코드 이후의 모든 내용이 반대로 표시됩니다.아랍어나 히브리어 같은 오른쪽에서 왼쪽으로 쓰는 데 사용됩니다.

hex editors are your friend

텍스트를 반전시키는 숨겨진 문자가 있습니다.여기에서 원시 문자를 볼 수 있습니다. https://www.soscisurvey.de/tools/view-chars.php

enter image description here

언급URL : https://stackoverflow.com/questions/59837318/why-is-this-hello-world-javascript-code-fragment-recognized-as-an-acceptable

반응형