zoukankan      html  css  js  c++  java
  • var decode = [+!+[]+[+[]]]+[!+[]+!+[]+!+[]]+[!+[]+!+[]+!+[]+!+[]+!+[]+!+[]]+[+[]];

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

    今天在百度上面看到一个东东
    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

  • 相关阅读:
    ABAP 表格控制(Table Control)和步循环
    ABAP中正则表达式的简单使用方法 (转老白BLOG)
    ABAP常用函数集锦
    ALV用例大全
    DXP 笔记
    STM32笔记——Power Controller(PWR)
    STM32之glossary
    STM32 解析futaba S-bus协议
    Windows下 vundle的安装和使用
    使用串口绘制实时曲线 —— SerialChart
  • 原文地址:https://www.cnblogs.com/CoinXu/p/3687201.html
Copyright © 2011-2022 走看看