Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.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 - Fatal编程技术网

Javascript:If语句,带有布尔值和字符串比较,给出意外结果

Javascript:If语句,带有布尔值和字符串比较,给出意外结果,javascript,Javascript,在我的代码中,我有以下内容: console.log(props.acknowledged) // false console.log(props.type === "SOMETHING") //false console.log(!props.acknowledged && !props.type === "SOMETHING") //false 这真是一个好主意!假&!假结果为假?表达式!props.type将props.type转换为布尔值。如果是字符串,那么!props

在我的代码中,我有以下内容:

console.log(props.acknowledged) // false
console.log(props.type === "SOMETHING") //false
console.log(!props.acknowledged && !props.type === "SOMETHING") //false

这真是一个好主意!假&!假结果为假?

表达式
!props.type
props.type
转换为布尔值。如果是字符串,那么
!props.type
表示
(props.type!=“”)
。与字符串
“SOMETHING”
的后续比较将始终为
false

换句话说

!props.type === "SOMETHING"
绝对不一样

props.type !== "SOMETHING"
也许你的意思是

!(props.type === "SOMETHING")

一元
运算符比表达式
绑定得更紧!props.type
props.type
转换为布尔值。如果是字符串,那么
!props.type
表示
(props.type!=“”)
。与字符串
“SOMETHING”
的后续比较将始终为
false

换句话说

!props.type === "SOMETHING"
绝对不一样

props.type !== "SOMETHING"
也许你的意思是

!(props.type === "SOMETHING")

一元
操作符绑定得比
===

更紧密。您需要添加这样的偏执:
!(props.type==“某物”)

的优先级
大于
==
运算符,因此您的代码将按以下方式进行评估:

!(props.type) === "SOMETHING"
因此,如果
props.type
等于say
“something other”
,它将成为
false
的二进制值,您的整个表达式是
something&&false
,即
false

我想你想要的是:

!(props.type === "SOMETHING")
甚至

props.type !== "SOMETHING"

您需要添加这样的论断:
!(props.type==“某物”)

的优先级
大于
==
运算符,因此您的代码将按以下方式进行评估:

!(props.type) === "SOMETHING"
因此,如果
props.type
等于say
“something other”
,它将成为
false
的二进制值,您的整个表达式是
something&&false
,即
false

我想你想要的是:

!(props.type === "SOMETHING")
甚至

props.type !== "SOMETHING"

!props.type
对字符串求反,将字符串强制为布尔值(
true
,在本例中),这将导致
false
。然后将
false
与严格相等的“某物”进行比较,这将始终导致false。任何
和&false
都会导致
false

如其他人所述,解决方案是将not移动到比较中:

props.type !== "SOMETHING"

只是想帮助解释一下javascript键入的怪癖

!props.type
对字符串求反,将字符串强制为布尔值(
true
,在本例中),这将导致
false
。然后将
false
与严格相等的“某物”进行比较,这将始终导致false。任何
和&false
都会导致
false

如其他人所述,解决方案是将not移动到比较中:

props.type !== "SOMETHING"

只是想帮助解释javascript键入的怪癖

!props.type==“SOMETHING”
不同!(props.type==“某物”)
。运算符的优先级!我想你的意思是
props.type!==“某物”
。您正在否定该属性。
console.log(!“foo”)
==>表示您有
false===“SOMETHING”
@epascarello关键是我没有抱怨,我做了一些事情,trincot有超过10万个repI我也没有抱怨,但让OP知道了。“干得好,@GeorgeJempty;-)<代码>!props.type==“SOMETHING”
不同!(props.type==“某物”)
。运算符的优先级!我想你的意思是
props.type!==“某物”
。您正在否定该属性。
console.log(!“foo”)
==>表示您有
false===“SOMETHING”
@epascarello关键是我没有抱怨,我做了一些事情,trincot有超过10万个repI我也没有抱怨,但让OP知道了。“干得好,@GeorgeJempty;-)