将 false 与按位或运算符一起使用

Using false with the bitwise OR operator

我的IDE说var x = false | isIE;可以简化为var x = isIE;

这是真的吗?

有什么棘手的JavaScript业务我应该知道吗?

isIE 定义为:

function ms_ie() {
    var ua = window.navigator.userAgent;
    var old_ie = ua.indexOf('MSIE ');
    var new_ie = ua.indexOf('Trident/');
    var edge = ua.indexOf('Edge/');

    if ((old_ie > -1) || (new_ie > -1) || (edge > -1)) {
        return true;
    }
    return false;
}

在布尔代数中 0 | 0 == 00 | 1 == 1 可以翻译成 false | false == 0false | true == 1

这是 JavaScript,所以如果 isIEBooleannullundefined,这将转换为 Integer,您将始终以 01

结尾

您很可能想使用 逻辑 OR 运算符,它是 ||(双竖线)而不是 |(正如您指出,是一个 按位或 运算符)。在这种情况下,答案是 YES,因为该操作将始终跳过 false 值 (false || something === something)。

按位 运算符而言,您应该知道它们对 32 位值进行运算,因此如果您使用的值大于 32 位数字所能容纳的值,您的数据将被截断。您可以阅读有关此内容的更多信息 on MDN article about Bitwise Operators编辑: 澄清 - 按位运算符会将任何值转换为 Number 值(转换为 32 位整数,具体而言)。