也许是太无聊了今天看到别人用javaScript的[]和一些符号弄了个程序,完全看不懂,小研究一下,废话不说,先看代码,前面是javaScript语句,后面是结果
>true // true boolean
>+true // 1 number
>[]+true // "true" string
>[] // [] object
>+[] // 0 number
>[+[]] // [0] object
>[[]] // [Array[0]] object
>[[]][+[]] // [] object
>[[]][0] // [] object
>[[]][+[]] == [[]][0] // false
>[[]][+[]] == [] // false
>[[]][0] == [] // false
>[] == [] // false
>++[] // Error
>++[[]][+[]] // 1 number
>++[[]][+[]]+[+[]] // "10" string
>++[[]][+[]]+[+[]] // 1 number
>!+[]+!+[] // 2 number
>+!+[]+(+!+[]) // 2 number
>[][+[]] // Error
>[][[]] // undefined undefined
>[][[]]+[] // "undefined" string
个人水平不足,只当是JS特性,可能这是JavaScript编译器的处理结果,因为它们语法上来说是没错的,所以可以编译,但很明显可以看出,"[]"是一个object,被"+"会变成string,被"!"后会变成boolean,而boolean被+后变成number!,而可以转化为number的string与number相加会变成string,相减会变成number!
虽然很无聊,也不完全没有实用性,唯一能想到的实用就是装B,写的代码让别人完全看不懂。比如我就装B一下:打开你的开发人员工具Console面板,输入代码 (![]+[])[+!+[]]+([][[]]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+((+!+[]+[+[]])-(!+[]+!+[]))+(!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]) 执行的结果是我的帐号"ada87",也可以用(![]+[])[+!+[]]+([][[]]+[])[!+[]+!+[]]+(![]+[])[+!+[]]+(!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[])+(!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]),还可以有多种方法,结果是一样的,当然你不一定能学我,目前好像只能打出这几个字母a d e f i l n r s t u 与数字的组合,具体原因可以自己去想。