javascript中参数的位掩码类型
bitmask type of argument in javascript
我看到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/相关文章:
- 如何为jQuery屏蔽输入插件创建一个允许字母数字、空格和重音字符的掩码
- 从右到左输入掩码
- 如何在引导程序元素的顶部添加掩码
- 在筛选网格期间,网格负载掩码不起作用
- 将形状/掩码动态添加到内联svg中
- 输入文本的掩码
- 在javascript中动态修改掩码高度
- 在sencha touch中列出掩码
- 如何使用angularjs在剑道网格过滤器文本框中应用电话号码掩码
- jQuery:在验证错误之后,我的输入掩码函数不会'Don’不要在野外工作
- 网格负载掩码获胜'使用PagingMemoryProxy时不会消失
- 带有jQuery和屏蔽输入插件的手机掩码
- 当SVG是单独的文件时,剪辑路径/web工具包掩码有效,但在内联时无效
- AngularJS ui掩码为货币添加最大值和最小值
- 为什么jQuery掩码说它'It’这不是函数
- vTiger和jQuery手机掩码
- Extjs 4.2.1-网格掩码获胜'不要藏起来
- 如何检测-webkit掩码框图像何时已下载
- SVG掩码总是使元素不可见
- javascript中参数的位掩码类型