Recientemente, un compañero de trabajo mostró este fragmento de código JavaScript:
greet = "".toString.bind("hello world!")Si pega esto dentro de Developer Console y lo ejecuta, imprimirá un "¡Hola, mundo!" mensaje:
>> console.log(greet()) hello, world! Otra cosa interesante que encontré es que si pegas el mismo código de greet dentro de Node.js REPL, lo transpilará automáticamente a un formato "legible".
¿Como funciona esto? ¿Por qué es posible este comportamiento en un navegador y por qué Node.js lo formatea automáticamente?
El código real es:
greet = "...".toString.bind("hello world!") Donde ... en el literal de cadena son los bytes E2 80 AE , que es el carácter Unicode de anulación de derecha a izquierda, lo que hace que todo lo que sigue se muestre al revés. Se utiliza para escribir idiomas de derecha a izquierda como el árabe o el hebreo.
Tiene caracteres ocultos que invierten el texto. Aquí puede ver los caracteres sin procesar: https://www.soscisurvey.de/tools/view-chars.php