Javascript 无法将默认布尔参数设置为默认值

Javascript 无法将默认布尔参数设置为默认值,javascript,jquery,Javascript,Jquery,我一直在阅读关于为jQuery函数设置默认参数的方法。我喜欢在函数中创建JSON对象,并使用extend合并任何传递的选项。但现在我有一个函数定义如下: function SetGroup( convert ) { convert = convert || true; .... }) convert的值总是设置为true。以以下所有方式调用SetGroup()会导致convert==true: SetGroup(); SetGroup(true); SetGroup(fals

我一直在阅读关于为jQuery函数设置默认参数的方法。我喜欢在函数中创建JSON对象,并使用extend合并任何传递的选项。但现在我有一个函数定义如下:

function SetGroup( convert ) { 
    convert = convert || true;
    ....
})
convert的值总是设置为true。以以下所有方式调用SetGroup()会导致convert==true:

SetGroup();
SetGroup(true);
SetGroup(false);
我有另一个参数,我为它设置了默认值,它可以工作,但它也是一个字符串。我怀疑上面的问题是由于参数是布尔值


如何对布尔参数执行此操作?

将变量默认为true的
variable=variable | | true
语法依赖于JS意义上的第一个参数为“false”。这意味着在布尔表达式中计算为false的
变量
的任何值都将被值
true
覆盖

正如您所提到的,当定义的值不是自然的“假”(例如,使用字符串或非零整数)时,这种方法非常有效。然而,这不适用于布尔人。正如您可能猜到的,
false
实际上是“false”

根据定义,如果左操作数为假,则布尔OR运算符
|
返回右操作数。因此,如果左操作数始终为布尔值,右操作数始终为
true
,则它将始终返回true

相反,请尝试以下方法:

function setGroup( convert ) { 
    convert = (convert != false);
    ....
})
如果
convert
undefined
,则它将是
true
。同样,如果它是
真的
。如果
convert
false
,则仍为
false