JavaScript:处理默认值为true的函数参数
有没有办法简写一下JavaScript:处理默认值为true的函数参数,javascript,Javascript,有没有办法简写一下var x=false | | true?因为提供的示例的计算结果始终为true。例如,在此函数中: function load(bool) { loading = bool || true; } 加载始终被评估为true 在lodash的帮助下,我尝试了load=(!\uu.isUndefined(bool))?布尔:是的。否则,它可能被写为load=(typeof bool!==未定义)?布尔:是的。但我发现这是冗长的 编辑:为了澄清起见,我想为x=false |
var x=false | | true代码>?因为提供的示例的计算结果始终为true。例如,在此函数中:
function load(bool) {
loading = bool || true;
}
加载
始终被评估为true
在lodash的帮助下,我尝试了load=(!\uu.isUndefined(bool))?布尔:是的代码>。否则,它可能被写为load=(typeof bool!==未定义)?布尔:是的代码>。但我发现这是冗长的
编辑:为了澄清起见,我想为x=false | | false
找到一个更好的解决方法(与我的尝试相比),其中在bool中可以是true
或false
(并且false
对这种情况不起作用,因为它将只计算为true)。如何
(bool == null) ? true : bool;
正如@RobG所提到的,我们甚至可以通过以下方式使其更加简洁:
(bool == null) || bool;
如果您想明确说明您正在给这个参数一个默认值true,那么您可以参考参数。length
:
bool = arguments.length ? bool : true;
或
无论什么| | true
始终是true
除非第一个不是布尔表达式(且未计算为未定义,null,”,0),似乎您想要类型bool==“未定义”?真的:bool
,但我无法想象你为什么要这么做。你到底想应用什么逻辑?如果它是未定义的
,它应该是真的
,否则它应该是!!bool
?@deceze-我想bool可以是真的、假的或未定义的。OP希望将undefined转换为true,而其他的则不做。如果OP希望简洁,那么bool==null?true:bool
可能适合。但不是我喜欢的茶。null==x | | x
也不是,但它更不稳定。啊!是的,这是减少语句大小的另一个级别。我会用你的建议更新我的答案。谢谢你关于参数的想法。我接受了勒克什的回答,因为它听起来更明确(不是指帖子内容)。
bool = bool || !arguments.length;