javascript - 如果检查该变量是否为布尔值的语句会导致 "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 中的好方法。
解决方案
简单的逻辑错误
if (bool !== true || bool !== false)
所以让我们大声读出来。如果 bool 不等于 true 或 bool 不等于 false,则进入此块。
因此,当 booltrue
为非 false 时,它将进入 if 块。
如果 bool 不等于 true并且bool 不等于 false ,则必须是
推荐阅读
- android - Picasso 不将 url 加载到 ImageView 传递值时抛出构造函数
- sql - 创建了一个包含主键列和两个外键列的连接表,而不是拉入数据
- c# - 无法创建目录:System.UnauthorizedAccessException 错误
- macos - 如何在 macOS 上获取 awk 版本?
- r - 使用 r 中其他两列的 group_by 计算行数
- haskell - 如何修复haskell中的“函数中的非详尽模式”错误?
- java - 如何删除JPanel内图像和文本之间的空白?
- regex - 如何匹配不包含特定字符串的字符串
- android - 如何使用 kotlin 将一列复制到 SQlite 数据库中的另一列
- c++ - 写入开头后附加到二进制文件