为什么是“你好,世界!JavaScript 代码片段被识别为可接受的程序指令?

2022-08-30 02:39:51

最近,一位同事展示了这段JavaScript代码:

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

如果将此内容粘贴到开发人员控制台中并执行,它将打印一条“Hello, World!”消息:

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

我发现的另一个有趣的事情是,如果你将相同的代码粘贴到Node.js REPL中,它会自动将其转译为“可读”格式。greet

这是如何工作的?为什么这种行为在浏览器中是可能的,为什么Node.js会自动格式化它?


答案 1

实际代码为:

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

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

hex editors are your friend


答案 2

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

enter image description here