Skr*_*lin 3 javascript boolean-logic
在javascript中,代字号运算符是按位NOT或补码,为什么以下不能按预期工作?
var x = true;
var tildeX = ~x;
var exclX = !x;
tildeX == exclX; // returns false
Run Code Online (Sandbox Code Playgroud)
原因是因为true
相当于1
,当你~
对1
你得到的数字执行按位NOT()时-2
.当与NOT运算符(!
)结合使用时会产生错误(因为与NOT运算符组合时唯一会生成true的数字0
)
引自链接:
按位注意任何数字x的产量 - (x + 1)