Javascript 检查变量是否为布尔值的If语句将导致;布尔值!=布尔值;
我试图在我的一些函数中输入一些错误,这些函数检查某个特定字段是否已启用。我想添加一些条件检查,以确保函数的特定参数始终是布尔值(即true以验证字段是否启用/false以验证字段是否禁用),因为我注意到,如果使用不同的数据类型,我的函数将不会产生错误 因此,我设置了一个小测试代码,它还允许用户使用某些字符串来代替真正的布尔值。看起来是这样的: (注意:我们正在使用Squish进行GUI测试,并使用它们的一些内部功能) 运行此命令将在控制台中显示以下结果(test.[something]基本上类似于打印到控制台)Javascript 检查变量是否为布尔值的If语句将导致;布尔值!=布尔值;,javascript,error-handling,boolean-logic,Javascript,Error Handling,Boolean Logic,我试图在我的一些函数中输入一些错误,这些函数检查某个特定字段是否已启用。我想添加一些条件检查,以确保函数的特定参数始终是布尔值(即true以验证字段是否启用/false以验证字段是否禁用),因为我注意到,如果使用不同的数据类型,我的函数将不会产生错误 因此,我设置了一个小测试代码,它还允许用户使用某些字符串来代替真正的布尔值。看起来是这样的: (注意:我们正在使用Squish进行GUI测试,并使用它们的一些内部功能) 运行此命令将在控制台中显示以下结果(test.[something]基本上类似
致命错误:布尔不是布尔数据类型。
这对我来说似乎很奇怪
此外,在main中运行此命令:
function main()
{
boolCheck("T")
}
给出以下结果:
致命错误:布尔不是布尔数据类型。
显然,这一切的处理方式有问题。也许我只是走错了路。有人能提供一些关于为什么“布尔”和“布尔”不相等的见解吗?还是一个更好的方法来处理这段时间?例如,我想想出一个好方法,将这一切都包装在Try/Catch中。简单的逻辑错误
if (bool !== true || bool !== false)
让我们大声读出来。如果bool不等于true或bool不等于false,则进入此块
因此,当bool为true
时,它不是false,因此它将进入if块
如果bool不等于true且bool不等于false简单逻辑错误
if (bool !== true || bool !== false)
让我们大声读出来。如果bool不等于true或bool不等于false,则进入此块
因此,当bool为true
时,它不是false,因此它将进入if块
需要说明的是,如果bool不是euqal到true和bool不等于false为什么不使用npm模块
这符合你的要求
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
为什么不使用npm模块
这符合你的要求
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
我不知道是高兴我的错误通常是简单的还是羞愧的lol。谢谢你帮我解决这个问题!我做了那个改变,它就像一个符咒。我不知道是高兴我的错误通常是简单的还是羞愧的lol。谢谢你帮我解决这个问题!我做了那个改动,效果很好。此外,为了完整起见,最好将
if(lies.indexOf(bool)!=-1)
更改为else if(lies.indexOf(bool)!=-1)
。@Leetylor为什么?我的理解是,else if
仅在不满足if
语句时进行评估。我想同时检查真值和假值。如果第一个成功,那么第二个为什么会成功?你认为一个值可以是真的也可以是假的吗?!此外,为了完整性,最好将if(lies.indexOf(bool)!=-1)
更改为else-if(lies.indexOf(bool)!=-1)
。@Leetylor为什么?我的理解是,else if
仅在不满足if
语句时进行评估。我想同时检查真值和假值。如果第一个成功,那么第二个为什么会成功?你认为一个值可以是真的也可以是假的吗?!这与其说是一个评论,不如说是一个评论answer@epascarello在进一步回答时,我会记住这一点。这更多的是一个评论,而不是一个评论answer@epascarello在进一步回答时,我会记住这一点