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)