javascript中参数的位掩码类型

bitmask type of argument in javascript

本文关键字:掩码 类型 参数 javascript      更新时间:2023-09-26

我看到PHP中有一些函数可以接受多个选项到一个参数中,例如:

error_reporting(E_ERROR & E_WARNING);

我想在我的javascript函数中实现这种功能。你知道接受这种参数的函数的例子吗?

这个函数怎么知道传递的选项是什么?

(假设为:error_reporting(E_ERROR | E_WARNING);)

它是位掩码。所以E_ERROR可能是一个像这样的数字(二进制):

0010000

和E_WARNING可能是:

0000010

,当它们与|组合时,你得到

0010010

(单个整数,设置多个位)

函数可以检查哪些位是使用&按位运算符。你当然可以在javascript中做到这一点,尽管它可能不太常见,而且可能效率和可靠性较低,因为javascript没有真正的整数,它们实际上是浮点数。

在javascript中,您可能更喜欢这样使用:

error_reporting({warning: true, error: true});

(经过编辑,以更合理的方式显示,使用| not &

是的,这是可能的,但它适用于|

var flag1 = 1,
    flag2 = 2; // powers of 2
function get(flags) {
    if((flags & flag1) === flag1) { // remove all other bits and check
        alert('flag1');             // whether you get the flag itself
    }
    if((flags & flag2) === flag2) {
        alert('flag2');
    }
}
get(flag1 | flag2); // alerts both

你当然可以创建一个辅助函数来做检查,这样你就不需要那些括号了:

function contains(flags, flag) {
    return (flags & flag) === flag;
}
http://jsfiddle.net/pimvdb/NpFYj/1/