在javascript中有===的通配符吗?

时间:2014-12-29 17:34:24

标签: javascript

我有一个测试一些东西的函数,比如:

function myfunc(user, foo, bar){
   if(user.foo === foo && user.bar === bar){
    //add some data to an array
   }
}

在某些例外情况下,我并不关心foo或bar是什么。调用函数时,如何使它们始终为真。我可以改变功能的内部工作方式,只要它对性能不差。

2 个答案:

答案 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)

最简单的方法是检查foobar是否与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_*可以是undefinednull,如果它们永远不是foobar的有效值。或者,您可以检查提供的参数的长度:

var fooProvided = arguments.length >= 2, barProvided = arguments.length >= 3;

并以与上述相同的方式切换。