最近同事展示了这段JS代码片段:
greet = "".toString.bind("hello world!")
如果将其粘贴到开发人员控制台中并执行,则会显示“ Hello World”消息:
>> console.log(greet())
hello world!
另一个有趣的发现,如果您在NodeJS repl中粘贴相同的greet
代码,它将自动将其转换为“可读”格式。
这是如何工作的?为什么在浏览器中会发生这种行为,为什么Node会自动设置其格式?
实际代码是:
greet = "...".toString.bind("hello world!")
字符串文字中的...
是字节E2 80 AE
,它是从右到左的覆盖Unicode字符,这将导致其后的所有内容反向显示。它用于编写从右到左的语言,例如阿拉伯语或希伯来语。
您有隐藏的字符使文本反转。在这里您可以看到原始字符:https://www.soscisurvey.de/tools/view-chars.php