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;