【发布时间】:2013-05-04 00:10:49
【问题描述】:
未定义的位运算符的逻辑是什么???
var x;
console.log(x); // undefined
console.log(x^7); // 7
console.log(7^x); // 7
console.log(x|7); // 7
console.log(7|x); // 7
console.log(7&x); // 0
console.log(x&7); // 0
console.log(~x); // -1
console.log(x*2); // NaN
console.log(x/2); // NaN
console.log(x+2); // NaN
console.log(x-2); // NaN
我可以在 NaN 中看到一些意义。因为 undefined -2 真的不是一个数字。但我不遵循位运算符和未定义的任何逻辑。
【问题讨论】:
-
位运算仅对整数有意义,因此参数会自动强制转换为该类型。
-
是的,我预计它会引发错误或有意义的事情。这种无声的强制在我的代码中造成了无限循环。
标签: javascript undefined bit-manipulation undefined-behavior