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