为什么在javascript里 o取反后是false ??

JavaScript022

为什么在javascript里 o取反后是false ??,第1张

js规定非零非空即真。

undefined、null、0、NaN、""

除了上诉几个值在转换成布尔值会转成false外,其他任何对象任何值转成布尔值都是true

因为取反就是把对象转换成bool值的,所以会先把num转成布尔值,然后再取反得到true。

然后在弹出。。。

------------------------------------

不对啊,按这逻辑应该弹出true的。

int型是32位整型数据类型,int型的8在内存里占32bit,存储为

00000000 00000000 00000000 00001000

,按位取反操作后,就变成了你输出的那样。而且这个二进制默认是有符号型的整数,其最高位的1是代表负号,我们知道二进制负数表示为数值位取反再加1(也就是补码),依照这个,对你输出的数减1,取反(第一个1是符号位,不变),得到其原码:

10000000 00000000 00000000 00001001,

也就是负9。