我看到在 PHP 中有可以在一个参数中接受多个选项的函数,例如:
error_reporting(E_ERROR & E_WARNING);
我想在我的 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});
(编辑以更明智的方式显示它,用 | 不是 & 将它们结合起来)
是的,这是可能的,但它适用于|
.
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;
}