繁体   English   中英

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

[英]Function with optional parameter not registering passed value

我有这个函数有一个可选参数。 问题是,当我传递一个参数时,它的行为就像我从未传递过它一样。

这是我的代码:

function sideA(i){

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

    console.log(i);
}

sideA(0);

在这里,控制台将始终显示“ random ”。 不确定是什么。 有任何想法吗?

0,"",undefined,null视为false

在这一行

i = i || 'random';

如果我是真的那么i的值将被分配,否则将被使用

试试这样

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

像这样打电话

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

0是假的。

我想你想检查它是否为nullundefined

 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); 


文档:

这是因为0是一个假值 ,因此Logical OR运算符将返回第二个操作数。

如果你想使用哪个值传递,如果有任何甚至未定义但是如果没有使用参数,则想要使用默认值,如sideA(); 然后

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

尝试明确地测试i是否undefined 如果i没有undefined ,请返回i ,否则返回'random'

  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); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM