我一直在阅读有关为jQuery函数设置默认参数的方法。我喜欢在函数中创建一个JSON对象,并使用extend来合并任何传递的选项。但是现在我有一个定义如下的函数:
function SetGroup( convert ) {
convert = convert || true;
....
})
convert的值始终设置为true。以下列所有方式调用SetGroup()会导致convert == true:
SetGroup();
SetGroup(true);
SetGroup(false);
我有另一个参数,我设置了这样的默认值,它可以工作,但它也是一个字符串。我怀疑上面的问题是由于参数是一个布尔值?
如何使这个工作用于布尔参数?
答案 0 :(得分:2)
将变量默认为true的variable = variable || true
语法依赖于第一个参数是" falsey"在JS意义上。这意味着在布尔表达式中计算为false的variable
的任何值都将被值true
覆盖。
就像你提到的那样,当定义的值不是自然的" falsey" (例如,使用字符串或非零整数)。但是,这对布尔人来说并不起作用。正如您可能猜到的那样,false
实际上是" falsey"。
根据定义,如果左边的操作数为false,则布尔OR运算符||
返回右操作数。因此,如果左操作数始终是布尔值,则它将始终返回true,而右操作数始终为true
。
相反,试试这个:
function setGroup( convert ) {
convert = (convert != false);
....
})
如果convert
是undefined
,那么它将是true
。同样,如果它是true
。如果convert
为false
,则仍为false
。