为什么这个“你好,世界!” JavaScript代码片段被识别为可接受的程序指令?[重复]

2020/11/07 01:22 · javascript ·  · 0评论

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

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

如果将其粘贴到开发人员控制台中并执行,将打印“ Hello,World!”。信息:

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

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

这是如何运作的?为什么在浏览器中会出现这种现象,为什么Node.js会自动对其进行格式化?

实际的代码是:

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

...在字符串字面量是字节E2 80 AE,这是自右至左的优先Unicode字符,这会导致其后的所有反向显示。它用于编写从右到左的语言,例如阿拉伯语或希伯来语。

十六进制编辑器是您的朋友

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

在此处输入图片说明

本文地址:http://javascript.askforanswer.com/weishenmezhegenihaoshijie-javascriptdaimapianduanbeishibieweikejieshoudechengxuzhiling.html
文章标签: ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!