JavaScript表达式
这个问题在这里已经有了答案:
首先将您的代码分解为: !![]返回true(!!将转换为布尔值),现在+转换为数字so +!![]返回1。
![]转换为false,所以+![]返回0。
~[]返回-1 , ~![]也返回-1 。
~!![]返回-2 。
现在, -~!![]返回2 , -~![]返回1。
所以,结合他们都会返回10162014。
所有关于你知道的是〜,!,+,& -
![] = false; #作为一个表达式,由于! operatory [] = true; #作为一个表达式,它被定义了,所以它是true
+!![] = 1; 因为+true = 1; +![] = 1; 因为+true = 0 ,因为在JS中使用+运算符会将布尔值转换为整数ref
所以他所做的基本上是用boolean到integer转换和一些分组来构建一个数值。
[+!![]]+[+![]]+[+!![]] : []是一个空数组,它是truthy。 ![]因此是错误的, !![]是真实的。 +true将其强制为一个数字,如1 。 与+![]类似,通过false为0 。
[-~!![]+-~!![]-~!![]] : ~是一个二进制补码运算符; ~1是-2 。 因此,这评估为-(-2)+-(-2)+-(-2) ,这是6 。
其余的加数是相似的。
array + array将把array + array转换为字符串; 因此[1]+[0]+[1]+[6]...将给出字符串"1016..."
开始时的加号会将其转换为数字。
链接地址: http://www.djcxy.com/p/48049.html