1. ホーム
  2. javascript

[解決済み] なぜ、この "Hello, World! JavaScriptのコード断片は、許容されるプログラム命令として認識されるのですか?重複

2022-04-27 22:24:37

質問

最近、同僚がこのJavaScriptのコードの断片を見せた。

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

これをDeveloper Consoleに貼り付けて実行すると、"Hello, World!"というメッセージが表示されます。

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

もう一つ面白いのは、同じように貼り付けた greet のコードをNode.js REPLで読み込むと、自動的にquot;readable"フォーマットにトランスパイルしてくれます。

この仕組みはどうなっているのでしょうか?なぜブラウザでこのような動作が可能で、なぜNode.jsが自動的にフォーマットするのでしょうか?

どのように解決するのですか?

実際のコードは

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

ここで ... の文字列リテラルは、バイト E2 80 AE これは右から左に上書きするUnicode文字で、これ以降が逆に表示されるようになります。アラビア語やヘブライ語など、右から左に記述する言語に使用されます。