我们都知道,javascript中有一套假值机制,包括有“null,undefined,”,0,false”这五个基本类型,但同时还有”[],{},‘ ’“等容易混淆的类型,那下面让我们来看一下这些值在”==“和”===“这两者之间的关系表:
| == / === | false | 0 | NaN | null | undefined | “” (empty string) | ” ” (white space) | [] | {} |
| false | yes/yes | yes/no | no/no | no/no | no/no | yes/no | yes/no | yes/no | no/no |
| 0 | yes/no | yes/yes | no/no | no/no | no/no | yes/no | yes/no | yes/no | no/no |
| NaN | no/no | no/no | no/no | no/no | no/no | no/no | no/no | no/no | no/no |
| null | no/no | no/no | no/no | yes/yes | yes/no | no/no | no/no | no/no | no/no |
| undefined | no/no | no/no | no/no | yes/no | yes/yes | no/no | no/no | no/no | no/no |
| “” (empty string) | yes/no | yes/no | no/no | no/no | no/no | yes/yes | no/no | yes/no | no/no |
| ” ” (white space) | yes/no | yes/no | no/no | no/no | no/no | no/no | yes/yes | no/no | no/no |
| [] | yes/no | yes/no | no/no | no/no | no/no | yes/no | no/no | no/no | no/no |
| {} | no/no | no/no | no/no | no/no | no/no | no/no | no/no | no/no | no/no |
从上面的列表详细的列出了各种假值之间在”==”和”===”的关系。下表是各种假值在“!!”下的返回值的情况关系表:
| value | !!value |
| false | false |
| 0 | false |
| NaN | false |
| null | false |
| undefined | false |
| “” (empty string) | false |
| ” “(white space) | true |
| [] | true |
| {} | true |
上面两个表列出的各种假值的关系以及假值在”!!”下的返回值的情况,非常值得我们去注意在一些项目中细节的考虑,以期于防患于未然。