为什么!(〜真)不正确?

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)

mus*_*fan 9

原因是因为true相当于1,当你~1你得到的数字执行按位NOT()时-2.当与NOT运算符(!)结合使用时会产生错误(因为与NOT运算符组合时唯一会生成true的数字0)

以下是您可能感兴趣的一些信息

引自链接:

按位注意任何数字x的产量 - (x + 1)