无法将默认布尔参数设置为默认值
问题描述:
我一直在阅读有关如何为jQuery函数设置默认参数的方法。我喜欢在函数中创建一个JSON对象,并使用extend来合并任何传递的选项。但现在我有一个功能,定义如下:无法将默认布尔参数设置为默认值
function SetGroup(convert) {
convert = convert || true;
....
})
convert的值始终设置为true。呼叫个setgroup()在所有的转换通过以下方式结果的==真:
SetGroup();
SetGroup(true);
SetGroup(false);
我还有一个参数,我设置的默认值是这样,它的工作原理,但它也是一个字符串。我怀疑上面的问题是由于参数是一个布尔值?
如何使这个工作的布尔参数?
答
用于将变量默认为true的variable = variable || true
语法依赖于JS意义上的第一个参数为“falsey”。这意味着任何值variable
在布尔表达式中计算为false将被值true
覆盖。
就像你提到的那样,当定义的值不是自然的“伪造”(例如,使用字符串或非零整数)时,它可以很好地工作。但是,这对布尔值不起作用。正如你可能猜到的那样,false
实际上是“虚伪的”。
根据定义,布尔或运算符||
返回右操作数,如果左边的是falsey。所以如果左边的操作数总是布尔值,它总是返回true,而右边的总是true
。
相反,试试这个:
function setGroup(convert) {
convert = (convert != false);
....
})
如果convert
是undefined
,这将是true
。同样如果它是true
。如果convert
是false
,它仍然是false
。