我有两个这样的陈述:
$ready = true;
if($ready === true) {
echo "it's ready!";
}
这:
$ready = true;
if($ready !== false) {
echo "it's ready!";
}
我知道这些含义与=== true
是同一件事,而!== false
是同一件事。我看到人们使用否定类型(不是假或不是{something})。像这样:https://stackoverflow.com/a/4366748/4357238
但是使用一种或另一种的优缺点是什么?有什么性能上的好处?有任何编码好处吗?我认为使用否定类型而不是简单的=== true
会造成混淆。任何输入将不胜感激!谢谢
答案 0 :(得分:3)
这些并不意味着同一件事,您可以在下面看到这一点:
$ready = undefined;
if($ready === true) {
console.log("it's ready 1");
}
if($ready !== false) {
console.log("it's ready 2");
}
如有疑问,请坚持使用===
。您正在将其与实际情况进行比较。 “这应该完全等于true”与“这应该等于任何东西但必须完全为false”是2个独立的语句,第二个语句包含很多将为true的值(如上所示,undefined并非完全为false,因此这会是真的)。
答案 1 :(得分:1)
大多数PHP函数会从失败的手册中返回false,例如strpos
,
返回针相对于针所在的位置 干草堆字符串的开头(与偏移量无关)。另请注意 该字符串位置从0开始,而不是1。
如果找不到针,则返回FALSE。
因此它返回一个整数或 false ,那么使用strpos() === true
strpos() !== false
是检查结果的正确方法。
答案 2 :(得分:0)
这与性能无关,它们也不相同。它有助于我们减少不必要的if语句。
考虑一下:有一个变量foobarbaz
,其值可以是 foo / bar / baz / foobar / barbaz中的任何值。如果值不是< strong> foo 。所以不要这样写:
if(foobarbaz === "bar" || foobarbaz === "baz" || foobarbaz === "foobar" || foobarbaz === "barbaz") {
//some statement
}
else if(foobarbaz === "foo") {
//do nothing
}
您可以这样写:
if(foobarbaz !== "foo") {
//some statement
}
您可以看到我们能够消除不必要的else语句。
答案 3 :(得分:0)
在php ==中,仅比较值是否相等。举例
$ ready ='true';
if($ready == true) {
echo "true";
}
else{
echo "false";
}
打印为true,但是如果与===比较,则不仅检查值,还检查数据类型。因此,它与===进行比较,会显示错误。
谈论!==的工作原理相同。因此,如果使用
,则输出不是问题if($ready === true)
或
if($ready !== false)
无法比较这两个,因为两者相同。