我有一个测试一些东西的函数,比如:
function myfunc(user, foo, bar){
if(user.foo === foo && user.bar === bar){
//add some data to an array
}
}
在某些例外情况下,我并不关心foo或bar是什么。调用函数时,如何使它们始终为真。我可以改变功能的内部工作方式,只要它对性能不差。
答案 0 :(得分:2)
经常使用的解决方案是
function myfunc(user, foo, bar){
if((foo===undefined || user.foo === foo) &&
(bar===undefined || user.bar === bar)) {
//add some data to an array
}
}
答案 1 :(得分:1)
最简单的方法是检查foo
和bar
是否与skip
值匹配:
var ALWAYS_VALID_FOO = {},
ALWAYS_VALID_BAR = {};
function myfunc(user, foo, bar) {
if ((user.foo === foo || foo === ALWAYS_VALID_FOO) &&
(user.bar === bar || bar === ALWAYS_VALID_BAR)) {
// Do work here
}
}
ALWAYS_VALID_*
可以是undefined
或null
,如果它们永远不是foo
或bar
的有效值。或者,您可以检查提供的参数的长度:
var fooProvided = arguments.length >= 2, barProvided = arguments.length >= 3;
并以与上述相同的方式切换。