Javascript判断数据类型与真假值隐形转换研究

时间:2024-01-12 13:36:20

一、引言

我们在开发的时候经常要判断真和假,这是我们经常写的代码:

if(a){
alert(1)
}

那我们怎么判定a是真还是假呢?下面这些值的真假又是多少呢?它们的数据类型又是怎样的呢?

"",
0,
"true",
"false",
True,
true,
"undefined",
undefined
null
Null
"null"
"NULL"
"object"

二、数据类型

判断数据类型一般用两种方法:typeof和Object.prototype.toString.call(data)。

举个栗子:

Javascript判断数据类型与真假值隐形转换研究

我们用typeof看看它的数据类型:

Javascript判断数据类型与真假值隐形转换研究

看完null,再看一个空的json对象:

Javascript判断数据类型与真假值隐形转换研究

发现它的类型也是"object",那么我们怎么区分它们呢?用Object.prototype.toString.call(data)方法看看:

Javascript判断数据类型与真假值隐形转换研究

Javascript判断数据类型与真假值隐形转换研究

Javascript判断数据类型与真假值隐形转换研究

实验说明Object.prototype.toString.call方法能够得到更加具体的数据类型。我们也可以通过这个方法区分一个对象到底是Object还是Null,还是Array。

另外,我们用typeof或者Object.prototype.toString.call方法的时候,要注意,返回值是字符串:

Javascript判断数据类型与真假值隐形转换研究

Javascript判断数据类型与真假值隐形转换研究

三、真假值隐形转换

Javascript判断数据类型与真假值隐形转换研究

Javascript判断数据类型与真假值隐形转换研究

Javascript判断数据类型与真假值隐形转换研究

Javascript判断数据类型与真假值隐形转换研究

Javascript判断数据类型与真假值隐形转换研究

Javascript判断数据类型与真假值隐形转换研究

说明字符串“0”是为真的。

Javascript判断数据类型与真假值隐形转换研究

说明undefined为false。

Javascript判断数据类型与真假值隐形转换研究

Javascript判断数据类型与真假值隐形转换研究

说明null是false

Javascript判断数据类型与真假值隐形转换研究

字符串的undefined为真。

Javascript判断数据类型与真假值隐形转换研究

一个空的json是真。

那么一个空的数组呢?

Javascript判断数据类型与真假值隐形转换研究

一个空的数组也是为真的。