博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
var decode = [+!+[]+[+[]]]+[!+[]+!+[]+!+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+[+[]];
阅读量:5831 次
发布时间:2019-06-18

本文共 812 字,大约阅读时间需要 2 分钟。

【这标题就是吸引眼球滴~~~~~】

 

今天在百度上面看到一个东东

var decode = [+!+[]+[+[]]]+[!+[]+!+[]+!+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+[+[]];

结果是10306

做为一个初入门的骚年.....我惊呆了...查了一会资料,明白了

先把这个拆开一下

var decode = [+!+[]+[+[]]]     +    [!+[]+!+[]+!+[]]    +    [!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]    +    [+[]];

我只分析第一个[+!+[]+[+[]]]
这个也是分成两个部份
[+!+[] + [+[]]]
先看左边 +!+[]
+[] = 0(在一个对象前面加上任意符号,都会强制转换类型,因为是+,所以会转成number,可以用typeof输出来看看)
!+[] = true(因为0=false,所以!+[] = !0 = true)
+!+[] = 1(+true,又会把true转为number,true=1,这是最基础的js)
so,左边就是1。
再看右边[+[]]
上面已经得出结论 +[] = 0,所以 [+[]] = [0],此时的右边是一个数组对象Object
那么左边+右边
1+[0],是number+object,此时的+不是运算符,而是连字符,所以结果就是10,typeof = string。
后面的大致说下
[!+[]+!+[]+!+[]] 就是三个!+[]相加,就是 1+1+1 = [3]
[!+[]+!+[]+!+[]+!+[]+!+[]+!+[]] 就是六个!+[]相加 = [6]
[+[]] = [0]
所以前后加起来就是[10]+[3]+[6]+[0],typeof=string

转载于:https://www.cnblogs.com/CoinXu/p/3687201.html

你可能感兴趣的文章
让你的WPF程序在Win7下呈现Win8风格主题
查看>>
802.11 学习笔记
查看>>
Leetcode-Database-176-Second Highest Salary-Easy(转)
查看>>
构建Docker Compose服务堆栈
查看>>
最小角回归 LARS算法包的用法以及模型参数的选择(R语言 )
查看>>
Hadoop生态圈-Kafka常用命令总结
查看>>
如何基于Redis Replication设计并实现Redis-replicator?
查看>>
浮点数内存如何存储的
查看>>
贪吃蛇
查看>>
EventSystem
查看>>
用WINSOCK API实现同步非阻塞方式的网络通讯
查看>>
玩一玩博客,嘿嘿
查看>>
P1352 没有上司的舞会
查看>>
ios11文件夹
查看>>
【HLOJ 559】好朋友的题
查看>>
Electric Fence(皮克定理)
查看>>
nvl 在mysql中如何处理
查看>>
MyEclipse 快捷键
查看>>
快速傅里叶变换FFT
查看>>
大数据常用基本算法
查看>>