JavaScript表达式

这个问题在这里已经有了答案:

  • 为什么++ [[]] [+ []] + [+ []]返回字符串“10”? 8个答案

  • 首先将您的代码分解为: !![]返回true(!!将转换为布尔值),现在+转换为数字so +!![]返回1。

    ![]转换为false,所以+![]返回0。

    ~[]返回-1~![]也返回-1

    ~!![]返回-2

    现在, -~!![]返回2-~![]返回1。

    所以,结合他们都会返回10162014。

    所有关于你知道的是〜,!,+,& -


    ![] = false; #作为一个表达式,由于! operatory [] = true; #作为一个表达式,它被定义了,所以它是true

    +!![] = 1; 因为+true = 1; +![] = 1; 因为+true = 0 ,因为在JS中使用+运算符会将布尔值转换为整数ref

    所以他所做的基本上是用booleaninteger转换和一些分组来构建一个数值。


    [+!![]]+[+![]]+[+!![]][]是一个空数组,它是truthy。 ![]因此是错误的, !![]是真实的。 +true将其强制为一个数字,如1 。 与+![]类似,通过false0

    [-~!![]+-~!![]-~!![]]~是一个二进制补码运算符; ~1-2 。 因此,这评估为-(-2)+-(-2)+-(-2) ,这是6

    其余的加数是相似的。

    array + array将把array + array转换为字符串; 因此[1]+[0]+[1]+[6]...将给出字符串"1016..."

    开始时的加号会将其转换为数字。

    链接地址: http://www.djcxy.com/p/48049.html

    上一篇: JavaScript Expression

    下一篇: why ({}+{})="[object Object][object Object]"?