JavaScript数据类型及其判断

JS数据类型

JavaScript有5种简单数据类型:Undefined,Null,Boolean,Number和String,还有一种复杂数据类型:Object。

Undefined类型

Undefined类型只有一个值,即undefined,在使用var声明变量但未对其初始化时,该变量的值就是undefined。例:

var x;
console.log(x === undefined); //true

当使用typeof操作符进行数据类型判断时,Undefined类型返回字符串”undefined”。但是还有一种情况下也返回”undefined”:当变量尚未声明,即不存在时,也返回”undefined”。例:

var x;
console.log(typeof x); //undefined
console.log(typeof y); //undefined

Null类型

Null类型也只有一个值:null。null值表示一个空对象指针,故使用typeof操作符检测null值时会返回”object”,例:

var x = null;
console.log(typeof x); //object

对于null和undefined这两个值,它们有这样的关系:

console.log(null == undefined); //true

对用于保存对象的变量,当其尚未赋值时,为其初始化值为null,这样做不仅可以体现null作为空指针对象的惯例,还可以进一步区分undefined和null。

Boolean类型

该类型只有两个字面值:true和false,其区分大小写,即True和False不是Boolean值,只是变量标识符。要将一个值转换为对应的Boolean值,可使用函数Boolean(),在如if语句这样的判断中,会自动执行Boolean转换,举几个返回false的例子:

Boolean(false); //false
Boolean(""); //false
Boolean(0); //false
Boolean(NaN); //false
Boolean(null); //false
Boolean(undefined); //false

Number类型

该类型使用IEEE754格式来表示整型和浮点数值。最基本的数值字面量格式是十进制整数。八进制字面量的第一位必须是0,然后是八进制数字序列0~7,而如果输入无效的八进制数,如:079,则解析为十进制数79,严格模式下八进制字面量无效。十六进制字面值的前两位必须为0x,后跟任意十六进制数字序列0~9和A~F,字母大小写均可。
浮点数中值得注意的一点是其最高精度是17位小数,但在进行算术计算时其精度远不如整数。例:0.1+0.2的结果不是0.3,而是0.30000000000000004!
Number(),parseInt()和parseFloat()三个函数可以把非数值转换为数值,在此不作介绍。

String类型

String类型用于表示由零或多个16位Unicode字符组成的字符序列,即字符串。字符串可以由双引号”“或单引号”表示。
除了null和undefined以外。其他的值都有一个toString()方法,这个方法返回相应值的字符串表现。此外,还可以使用转型函数String()。

Object类型

ECMAScript中的对象其实就是一组数据和功能的集合。对象可以通过执行new操作符后跟要创建的对象类型的名称来创建。而创建Object类型的实例并为其添加属性和方法,就可以创建自定义对象,如:

var o = new Object();

数据类型判断

前面提到过可以使用typeof来判断数据类型,但这个方法并不能准确判断出所有的类型。除此之外,还有一个操作符:instanceof,其用于判断某个对象是什么类型的对象。由此我们可以做一些判断来判断各个数据类型:

//判断String,Boolean,Number和Undefined类型时,使用typeof操作符即可
//以判断String类型为例
function isString(str) {
    return typeof str == "string";
}

//判断Object类型
function isObject(obj) {
    return obj instanceof Object;
}

//判断Null类型
function isNull(x) {
    if(typeof x == "object") {
        if(x instanceof Object == false) {
            return true;
        }
        else {
            return false;
        }
    }
    else {
        return false;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值