带可选参数的函数未注册传递的值

时间:2015-05-23 02:12:12

标签: javascript jquery

我有这个有可选参数的功能。问题是,当我传递一个参数时,它表现得好像我从未传递过它。

这是我的代码:

function sideA(i){

    // i is an optional argument.
    i = i || 'random';

    console.log(i);
}

sideA(0);

此处,控制台将始终显示“random”。不确定是什么。有什么想法吗?

4 个答案:

答案 0 :(得分:1)

0,"",undefined,null视为false

在这一行

i = i || 'random';

如果我是真的那么i的值将被分配,其他随机将被使用

试试这个

 i= typeof i ===  "undefined" ? "random" : i

像这样打电话

sideA(0) 
sideA() // pass nothing to get random

答案 1 :(得分:1)

0是假的。

我想您要检查它是null还是undefined



function sideA(i) {
  // i is an optional argument.
  i = (i === null || i === undefined ? 'random' : i);

  console.log(i);
}

sideA(0);




或者,您可以查看typeof以查看它是否为数字:



function sideA(i) {
  // i is an optional argument.
  i = (typeof i === 'number' ? i : 'random');

  console.log(i);
}

sideA(0);




<强>文档

答案 2 :(得分:1)

这是因为0Falsy - Glossary | MDN,因此falsy value Logical将返回第二个操作数。

如果你想使用哪个值传递,如果有任何未定义的值,但是如果没有像sideA();那样使用参数,则想使用默认值,那么

i = arguments.length ? i : 'random';

答案 3 :(得分:0)

尝试明确测试i是否为undefined。如果i不是undefined,请返回i,否则返回'random'

&#13;
&#13;
    function sideA(i) {        
      // i is an optional argument.
      // if `i` _not_ `undefined` , `i` = `i` ,
      // else , `i` = `'random'`
      i = i !== undefined ? i : 'random';
    
      console.log(i);
    }

    sideA(0);
&#13;
&#13;
&#13;