博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js中的NaN、Infinity、null和undefined
阅读量:4319 次
发布时间:2019-06-06

本文共 1629 字,大约阅读时间需要 5 分钟。

js总共有7种数据类型:

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

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

    函数数据类型:function

    特殊数据类型:undefined,null

var a = 1;var b = 'abd';var c = true;var d = new Date();var e = function f(){alert(123);};var f;var g = null;alert(typeof(a)+';'+typeof(b)+';'+typeof(c)+';'+typeof(d)+';'+typeof(e)+';'+typeof(f)+';'+typeof(g));

结果为:

number;string;boolean;object;function;undefined;object

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

 

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

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

var a = 0/0;alert(a);

结果即为:NaN

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

var a = NaN;if(a!=a){	alert('!=');}

结果为:!=

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

var a = 9e99999999999999999999999999999999;alert(a);

结果即为:Infinity

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

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

 

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

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

var a;alert(a);alert(Math.abcdef);

2次的弹出结果都为:undefined

 

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

通过对象的constructor属性可以更好的区分不同的对象类型

constructor 属性表示创建对象的函数。 object.constructor必需的 object是对象或函数的名称。 说明constructor 属性是所有具有 prototype 的对象的成员。它们包括除 Global 和 Math 对象以外的所有 JScript 固有对象。constructor 属性保存了对构造特定对象实例的函数的引用。

举例:

function People(name){	this.name = name;}var p = new People("123");alert(p.constructor);

显示结果为:

function People(name){	this.name = name;}

可见对象的constructor属性保存了一个创建该对象的特定函数的引用

var str = "123";alert(str.constructor == String);var array = [1,2,3];alert(array.constructor == Array);

2次的结果都为true

 

 

转载于:https://www.cnblogs.com/sean-zou/archive/2013/02/27/3710079.html

你可能感兴趣的文章
[Kubernetes]深入理解StatefulSet
查看>>
2018.2.2 java中的Date如何获取 年月日时分秒
查看>>
基础知识回顾:闭包
查看>>
luogu P1602 Sramoc问题
查看>>
11.29燃尽图
查看>>
CPU31X-2DP通过DP网络连接远程IO站
查看>>
Ubuntu 10.10更新源列表
查看>>
工作总结:文件对话框的分类(C++)
查看>>
Android log system
查看>>
开源库(不定义更新)
查看>>
Java线程:线程的调度-让步
查看>>
jquery和zepto的区别
查看>>
oracle维护表空间和数据文件
查看>>
【原创】修改最大用户进程限制 "ulimit -u"
查看>>
maven 常用插件3
查看>>
五大安全研究者必用的搜索引擎
查看>>
python3.5.3rc1学习十一:字典与模块
查看>>
JDBC连接Mysql 8.0.12版本的几个注意事项
查看>>
Testbench代码设计技巧
查看>>
FlipView 索引为0 WP8.1
查看>>