Recientemente un compañero de trabajo mostró este fragmento de código JavaScript:
``js greet = "".toString.bind("¡hola mundo!")
Si pegas esto dentro de la consola de desarrollador y lo ejecutas imprimirá un mensaje "¡Hola, mundo!":
```js
console.log(greet())
¡hola mundo!
Otra cosa interesante que encontré es que si pegas el mismo código greet
dentro de Node.js REPL lo transpilará automáticamente a un formato "legible".
¿Cómo 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 el ...
en la cadena literal son los bytes E2 80 AE
, que es el carácter Unicode de anulación de derecha a izquierda, 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 en bruto: https://www.soscisurvey.de/tools/view-chars.php
[]