为什么将此“ Hello World” JS片段代码识别为可接受的程序指令?

问题描述 投票:10回答:2

最近同事展示了这段JS代码片段:

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

如果将其粘贴到开发人员控制台中并执行,则会显示“ Hello World”消息:

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

另一个有趣的发现,如果您在NodeJS repl中粘贴相同的greet代码,它将自动将其转换为“可读”格式。

这是如何工作的?为什么在浏览器中会发生这种行为,为什么Node会自动设置其格式?

javascript node.js
2个回答
8
投票

实际代码是:

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

字符串文字中的...是字节E2 80 AE,它是从右到左的覆盖Unicode字符,这将导致其后的所有内容反向显示。它用于编写从右到左的语言,例如阿拉伯语或希伯来语。


4
投票

您有隐藏的字符使文本反转。在这里您可以看到原始字符:https://www.soscisurvey.de/tools/view-chars.php

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.