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

Unable to set default boolean parameter to a default

本文关键字:设置 默认值 参数 布尔 默认      更新时间:2023-09-26

我一直在阅读关于为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的variable的任何值都将被值true覆盖。

正如您所提到的,当定义的值不是自然的"false"(例如,使用字符串或非零整数)时,这种方法非常有效。然而,这对布尔型不起作用。正如你所猜测的,false实际上是"虚假的"。

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

相反,试试这个:

function setGroup( convert ) { 
    convert = (convert != false);
    ....
})

如果convertundefined,那么它将是true。同样,如果是true。如果convertfalse,则它仍然是false