gpt4 book ai didi

javascript - 为什么 (![]+[])[+!![]+[]] 产生 "a"

转载 作者:可可西里 更新时间:2023-11-01 02:14:51 27 4
gpt4 key购买 nike

我有兴趣了解 JavaScript 的内部结构.我试图阅读 SpiderMonkey 的来源和 Rhino但是绕过我的头是相当复杂的。

我问的原因是:为什么像

  • (![]+[])[+!![]+[]] 生成 "a"
  • (Å=[],[µ=!Å+Å][µ[È=++Å+Å+Å]+({}+Å)[Ç=!!Å+µ,ª =Ç[Å]+Ç[+!Å],Å]+ª])()[µ[Å]+µ[Å+Å]+Ç[È]+ª](Å) 产生 警报(1)?

来源:http://sla.ckers.org/forum/read.php?24,32930,page=1 .

那个论坛上有很多 JavaScript 怪异的例子,我想从编程的 Angular 了解它在 Web 应用程序安全方面的工作原理。

最佳答案

如果您想了解为什么这些奇怪的表达式会如此工作,您可以打开 firebug 控制台并自己进行实验。我做到了,我得到了 ![]false!![]true,添加了一个数组到 bool 值(false+[]true+[])生成该值的字符串版本(false+[]="false" ).

这样表达式可以归结为:

"false"["1"] 

显然是“a”

关于javascript - 为什么 (![]+[])[+!![]+[]] 产生 "a",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2100184/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com