开发者

Coding method, why !== false

Why do I see peo开发者_Python百科ple doing if (false !== $var) { instead of if (false === true) {


This answer consists of three parts:

  1. The difference in order between (false == $var) and ($var == false)
  2. The difference between == and ===
  3. Why you see people doing (false !== $var) instead of if (false === true)

1. The difference in order between (false == $var) and ($var == false)

Because an often-made mistake is forgetting to put two = which results in an accidental attribution instead of comparison, some programmers decide to always put the invariable part of the equation on the left-side. This way, the accidental assignment is impossible and you don't risk getting

if ($var = false)

which assigns false to the variable $var and will always evaluate false instead of the desired

if ($var == false)

2. The difference between == and ===

The === or !== compares the variable's type as well as its value, whereas == and != compare value and convert types where needed.

Example:

0 == false // true
1 == true // true

0 === false // false
1 === true // false

0 !== false // true
0 !== true // true

false === false // true
false === true  // false

$var !== FALSE is used because a lot of built-in PHP functions return FALSE on error, and a value on success. The value returned may be the same value as TRUE but it may not be the same type.

3. Why you see people doing (false !== $var) instead of if (false === true)

Your question itself made people snicker (that's why OrangeDog's comment was upvoted that much): if people did if (false === true), it would equal if(false) and would never execute the enclosing block. It still happens though, for example in JavaScript when part of the code is generated in a serverside-language, like PHP.


because its something completely different.

the first code part opens an if clause only if var is not false. it may be zero, null or an empty string. but not of type boolean and false.

the second one is a contradiction that can never ever happen.


Why do I see people doing if (false !== $var) {

Logic comparisons are a common foil for beginning programmers, and it is typical to see $var = false when what was meant $var == false

So standard practice is to encourage programmers to always place variables on the right hand side, since $var=true is technically legal, but produces unexpected behavior, while true=$var is not legal and throws an error.

In your case it looks like ugly, if sensible, programming habits were taken to their logical end.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜