我试图在一些检查是否启用了特定字段的函数中加入一些错误。我想添加一些条件检查,以确保函数的特定参数始终为布尔值(即,用于验证该字段为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);
}
运行此命令会在本质上是控制台的位置上显示以下结果(测试。[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”为何不相等的见解?还是处理此期间的更好方法?例如,我很想想一种将所有内容包装在“尝试/捕获”中的好方法。
答案 0 :(得分:2)
简单逻辑错误
if (bool !== true || bool !== false)
所以让我们大声读出来吧。如果bool不等于true或bool不等于false,请进入此块。
因此,当bool为true
时,它不是假的,因此它将进入if块。
如果bool不等于true AND bool不等于false,则需要
答案 1 :(得分:0)
为什么不使用npm模块 boolean
符合您的要求
const boolean = require('boolean');
console.log(boolean('t')) // true
console.log(boolean('True')) // true
console.log(boolean(true)) // true
console.log(boolean('TrUe')) // true
console.log(boolean('TRUE')) // true
console.log(boolean('true')) // true
console.log(boolean('f')) // false
console.log(boolean('False')) // false
console.log(boolean(false)) // false
console.log(boolean('FaLsE')) // false
console.log(boolean('FALSE')) // false
console.log(boolean('false')) // false