2

我在 javascript 中有一个函数:

function test(a, b, c) {
    if(typeof b == "undefined")
      //do something 
    //function code
}

现在我想以这样的方式调用这个函数,以便typeof b remains undefineda & c containes值(不重新排序ab&c),比如

test("value for a",  what i can pass here so that b type will be undefined, "value for c")
4

4 回答 4

9

只需通过undefined(不带引号):

test("value for a", undefined, "value for c");
于 2012-06-12T09:17:51.397 回答
4

任何变量(未定义)。

var undefinedVar;
test("value for a", undefinedVar, "value for b");
于 2012-06-12T09:16:40.403 回答
4

如果你知道你要么通过 a、b 和 c 或者你通过 a 和 c,我会建议另一种方法。然后执行以下操作

function test(a, b, c) {
  if (arguments.length < 3){
      c = b;
      b = arguments[2]; //undefined
      //do want ever you would do if b is undefined
  }
}

在这种情况下,如果您错误地为 b 传递了未定义,则更容易发现它,因为它没有被解释为“未定义实际上并不意味着未定义,而是一个告诉我做不同事情的标志” ,测试参数长度通常比测试更健壮依赖参数的值,特别是如果该值也可能是错误的结果(即,如果该值未定义)

于 2012-06-12T09:20:08.617 回答
0

您可以使用void运算符:

test('value for a', void 0, 'value for c');

void运算符计算expression并返回undefined

于 2012-06-12T10:14:33.007 回答