首页 > 解决方案 > 如果检查该变量是否为布尔值的语句会导致 "boolean != boolean"

问题描述

我正在尝试将一些错误传递到我的一些函数中,以检查是否启用了特定字段。我想添加一些条件检查以确保函数的特定参数始终是布尔值(即 true 验证字段是否启用 / false 验证字段是否禁用)因为我注意到我的函数不会产生错误如果使用了不同的数据类型。

所以我设置了一个小测试代码,它还允许用户使用某些字符串来代替真正的布尔值。看起来像这样:(注意:我们使用 Squish 进行 GUI 测试并使用他们的一些内部功能)

function boolCheck(bool)
{
    var truth = ["true","True","TRUE","T","t"];
    var lies = ["false","False","FALSE","F","f"];

    if (truth.indexOf(bool) !== -1)
    {
        bool = true;
    }
    if (lies.indexOf(bool) !== -1)
    {
        bool = false;
    }
    else if (bool !== true || bool !== false)
    {
        test.fatal("ERROR: " + (typeof bool).toUpperCase() + " is not a BOOLEAN data type.");
    }
}


function main()
{
    boolCheck(true);
}

运行它会在本质上是控制台中显示以下结果(test.[something] 基本上就像打印到控制台)

Fatal ERROR: BOOLEAN is not a BOOLEAN data type.

这对我来说似乎很奇怪。

此外,在 main 中运行它:

function main()
{
    boolCheck("T")
}

给出这个结果:

Fatal ERROR: BOOLEAN is not a BOOLEAN data type.

显然,这一切的处理方式有问题。也许我只是走错路了。谁能提供一些关于为什么“BOOLEAN”和“BOOLEAN”没有显示为平等的见解?或者更好的方式来处理这个时期?例如,我很想想出一种将这一切包装在 Try/Catch 中的好方法。

标签: javascripterror-handlingboolean-logic

解决方案


简单的逻辑错误

if (bool !== true || bool !== false)

所以让我们大声读出来。如果 bool 不等于 true 或 bool 不等于 false,则进入此块。

因此,当 booltrue为非 false 时,它​​将进入 if 块。

如果 bool 不等于 true并且bool 不等于 false ,则必须是


推荐阅读