Kürzlich zeigte ein Kollege dieses Fragment von JavaScript-Code:
greet = "".toString.bind("hallo Welt!")
Wenn Sie dies in die Entwicklerkonsole einfügen und ausführen, wird eine "Hallo, Welt!" Nachricht ausgegeben:
"" console.log(grüßen())
hallo Welt!
Eine weitere interessante Sache, die ich herausgefunden habe, ist, dass, wenn man den gleichen "greet"-Code in Node.js REPL einfügt, er automatisch in ein lesbares Format transpiliert wird.
Wie funktioniert das? Warum ist dieses Verhalten in einem Browser möglich und warum formatiert Node.js es automatisch?
Der eigentliche Code lautet:
greet = "...".toString.bind("hello world!")
Wobei die ...
im Stringliteral die Bytes E2 80 AE
sind, was das Rechts-nach-Links-Überschreibungs-Unicode-Zeichen ist, das bewirkt, dass alles danach in umgekehrter Reihenfolge angezeigt wird. Es wird verwendet, um Sprachen wie Arabisch oder Hebräisch von rechts nach links zu schreiben.
Sie haben versteckte Zeichen, die den Text umkehren. Hier sehen Sie die Rohzeichen: https://www.soscisurvey.de/tools/view-chars.php