javascript - 如何 "NaNundefined"[10] ="e"或者 ([+[][[]]]+[][[]])[++[[]][+[]]+[+[]]] = "e"?

标签 javascript

Possible Duplicate:
Can you explain why ++[[]][+[]]+[+[]] = 10

众所周知,备忘单是我们能找到完成任务的最短方法 通过使用字符集。我无法理解它是如何执行的。谁能解释一下吗?

如何"NaNundefined"[10] ="e"([+[][[]]]+[][[]])[++[[]][+[]]+[+[]]] = "e"

最佳答案

"NaNundefined"[10] ="e" 很简单 - e 是字符串中的第十一个字符。

([+[][[]]]+[][[]])[++[[]][+[]]+[+[]]] = "e" 有点难,但你可以轻松地将其拆分:

[+[][[]]] -> [ NaN ]
[][[]] -> undefined
[ NaN ] + undefined -> "NaNundefined"
++[[]][+[]] -> 1
[+[]] -> "0"
1 + "0" -> "10"
"NaNundefined"["10"] -> "e"

第二个版本实际上是构造第一个版本的一种方法,(ab)使用 JavaScript 运算符的弱类型(例如,[NaN] + ""-> "NaN")。它还利用了 JavaScript 中的数组始终由字符串索引的事实(因此 array[10] 相当于 array["10"])。

如果您想阻止某人理解代码,第二个版本可以被视为混淆。但它实际上并没有多大作用,至少在日常编码生活中是这样。

关于javascript - 如何 "NaNundefined"[10] ="e"或者 ([+[][[]]]+[][[]])[++[[]][+[]]+[+[]]] = "e"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14646173/

相关文章:

javascript - 如何将 span 的内容复制到它的 title 属性中?

javascript - 调用异步函数 main 的正确方法是什么?

javascript - 如何处理 Controller 内部 Angular 服务的错误?

javascript - 使用 navigator.userAgent 进行 javascript 浏览器检测的语法解释

javascript - 模态图像在类方面存在问题

javascript - import ES6 两边的括号

javascript - 英国日期和时间的数据表顺序列

javascript - 当用户继续滚动时,在不中断动画的情况下在滚动页面上滑动 div 和关闭页面

javascript - 如何跨浏览器显示相对绝对日期?

javascript - 仅使用 CSS 固定和取消固定元素