JavaScript中的NaN、Infinity、null和undefined

JavaScript总共有7种数据类型:

    基本数据类型:number,string,boolean

    复合数据类型:object(对象,数组,还有一些专用对象如:Date,Error,RegExp)

    函数数据类型:function

    特殊数据类型:null,undefined

var a = 1;
var b = 'abc';
var c = true;
var d = new Date();
var e = function(){
    console.log('This is a function!');
};
var f;
var g = null;

console.log( typeof(a) );//number
console.log( typeof(b) );//string
console.log( typeof(c) );//boolean
console.log( typeof(d) );//object
console.log( typeof(e) );//function
console.log( typeof(f) );//undefined
console.log( typeof(g) );//object

JavaScript中,typeof运算符将报告null值为Object类型,而非null类型,这点潜在的混淆是为了向下兼容

 

number类型包含2个特殊的值,一个为NaN,另一个为Infinity

NaN:当一个运算产生了未定义的结果或该运算发生错误,则返回一个非数字的特殊值:NaN

var num = 0/0;
console.log(num);//NaN

NaN不和任何数值相等,包括它本身

var a = NaN;
var b = NaN;
console.log(a == b);//false

Infinity:当一个浮点数超过了JavaScript所能表示的最大值时,其结果为一个特殊的无穷大值:Infinity

var a = 9e999999;
console.log(a);//Infinity

 

null类型只包含一个特殊的值null(通常看做object类型的一个特殊值,表示空对象)

null:表示无值,有别于其他所有值, 如果一个变量的值为null,表示该变量的值不是一个有效的对象,数字,字符串...

 

undefined类型只包含一个特殊的值undefined

undefined:表示1,未定义的数据 2,定义未赋值的数据 3,和不存在的属性

var a;
console.log(a);//undefined
console.log(Math.abcdef);//undefined

 

在使用typeof方法判断object类型时,即使Date和Array是两种不同的对象,结果仍然都为object

此时需要使用对象的constructor属性区分具体对象类型

var date = new Date();
console.log(date.constructor);

输出结果为:

function Date(){
	[native code]
}

再来看一个例子

var str = "123";
console.log(str.constructor == String);//true
var array = [1,2,3];
console.log(array.constructor == Array);//true

当然也可以使用instanceof关键字

var date = new Date();
console.log(date instanceof Date);//true

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值