Why is this "Hello, World!" JavaScript code fragment recognized as an acceptable program instruction?

Javascriptnode.js

Javascript Problem Overview


Recently a coworker showed this fragment of JavaScript code:

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

If you paste this inside the Developer Console and execute it will print a "Hello, World!" message:

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

Another interesting thing I found is that if you paste the same greet code inside Node.js REPL it will automatically transpile it to a "readable" format.

How does this work? Why is this behaviour possible in a browser and why does Node.js automatically format it?

Javascript Solutions


Solution 1 - Javascript

The actual code is:

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

Where the ... in the string literal are the bytes E2 80 AE, which is the right-to-left override Unicode character, which causes everything after it to be displayed in reverse. It's used for writing right-to-left languages like Arabic or Hebrew.

hex editors are your friend

Solution 2 - Javascript

You have hidden characters which reverse the text. Here you can see the raw characters: https://www.soscisurvey.de/tools/view-chars.php

enter image description here

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestiondevaerialView Question on Stackoverflow
Solution 1 - JavascriptdecezeView Answer on Stackoverflow
Solution 2 - JavascriptfeedyView Answer on Stackoverflow