【问题标题】:JavaScript bitwise undefined pitfalls?JavaScript 按位未定义的陷阱?
【发布时间】: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


【解决方案1】:

内部函数[ToInt32]all 位运算符的all 操作数上调用。

注意ToInt32(undefined) -> 0,范围是[0, 2^32)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-03
    • 1970-01-01
    • 1970-01-01
    • 2010-10-03
    相关资源
    最近更新 更多