Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 检查变量是否为布尔值的If语句将导致;布尔值!=布尔值;_Javascript_Error Handling_Boolean Logic - Fatal编程技术网

Javascript 检查变量是否为布尔值的If语句将导致;布尔值!=布尔值;

Javascript 检查变量是否为布尔值的If语句将导致;布尔值!=布尔值;,javascript,error-handling,boolean-logic,Javascript,Error Handling,Boolean Logic,我试图在我的一些函数中输入一些错误,这些函数检查某个特定字段是否已启用。我想添加一些条件检查,以确保函数的特定参数始终是布尔值(即true以验证字段是否启用/false以验证字段是否禁用),因为我注意到,如果使用不同的数据类型,我的函数将不会产生错误 因此,我设置了一个小测试代码,它还允许用户使用某些字符串来代替真正的布尔值。看起来是这样的: (注意:我们正在使用Squish进行GUI测试,并使用它们的一些内部功能) 运行此命令将在控制台中显示以下结果(test.[something]基本上类似

我试图在我的一些函数中输入一些错误,这些函数检查某个特定字段是否已启用。我想添加一些条件检查,以确保函数的特定参数始终是布尔值(即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不等于truebool不等于false简单逻辑错误

if (bool !== true || bool !== false)
让我们大声读出来。如果bool不等于true或bool不等于false,则进入此块

因此,当bool为
true
时,它不是false,因此它将进入if块

需要说明的是,如果bool不是euqal到truebool不等于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在进一步回答时,我会记住这一点