前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >NaN和Infinity,null和undefined

NaN和Infinity,null和undefined

作者头像
jojo
发布2022-04-01 09:07:12
1.1K0
发布2022-04-01 09:07:12
举报
文章被收录于专栏:jojo的技术小屋

作者:汪娇娇

日期:2016.10.10

看到这个标题,大家对这4个变量应该都不陌生,但若说起他们的差别或者是举个小栗子判断结果,估计就有点晕乎乎的了。

1、NaN和Infinity

那先来说说JavaScript的数据类型,有Number、字符串、布尔值、对象等等,而NaN和Infinity就属于Number类型。先说说它俩的差别:

代码语言:javascript
复制
NaN; // NaN表示Not a Number,当无法计算结果时用NaN表示
Infinity; // Infinity表示无限大,当数值超过了JavaScript的Number所能表示的最大值时,就表示为Infinity

举个栗子:

代码语言:javascript
复制
2 / 0; // Infinity
0 / 0; // NaN

并且NaN有个特例,我们都知道相等运算符有两种:== 和 ===。

== 比较,它会自动转换数据类型再比较;

=== 比较,它不会自动转换数据类型,如果数据类型不一致,返回false,如果一致,再比较。

但NaN却和所有的值都不相等,包括它自己:

代码语言:javascript
复制
NaN===NaN;  //false;

唯一能判断NaN的方法是通过IsNaN()函数:

代码语言:javascript
复制
isNaN(NaN); // true

2、null和undefined

null和undefined恰好都是JavaScript的数据类型。

在其他语言中,也有类似JavaScript的null的表示,例如Java也用null,Swift用nil,Python用None表示。

(1)null表示"没有对象",即该处不应该有值。典型用法是:

a、作为函数的参数,表示该函数的参数不是对象。

b、作为对象原型链的终点。

举个栗子:

代码语言:javascript
复制
Object.getPrototypeOf(Object.prototype) // null

(2)undefined表示"缺少值",就是此处应该有一个值,但是还没有定义。典型用法是:

a、变量被声明了,但没有赋值时,就等于undefined。

b、调用函数时,应该提供的参数没有提供,该参数等于undefined。

c、对象没有赋值的属性,该属性的值为undefined。

d、函数没有返回值时,默认返回undefined。

举个栗子:

代码语言:javascript
复制
var i; i // undefined 
function f(x){console.log(x)} f() // undefined
var o = new Object(); o.p // undefined 
var x = f(); x // undefined

事实证明,这并没有什么卵用,区分两者的意义不大。大多数情况下,我们都应该用null,undefined仅仅在判断函数参数是否传递的情况下有用。

举个栗子:

代码语言:javascript
复制
function add(a,b){
	var c=a+b;
	console.log(a+","+b+","+c);
}
add(1,2);//结果是1,2,3
add(1,null);//结果是1,null,1
add(1);//结果是1,undefined,NaN
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016/10/10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档