原 NaN和Infinity,null和u

作者:汪娇娇

日期:2016.10.10

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

1、NaN和Infinity

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

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

举个栗子:

2 / 0; // Infinity
0 / 0; // NaN

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

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

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

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

NaN===NaN;  //false;

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

isNaN(NaN); // true

2、null和undefined

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

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

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

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

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

举个栗子:

Object.getPrototypeOf(Object.prototype) // null

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

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

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

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

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

举个栗子:

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仅仅在判断函数参数是否传递的情况下有用。

举个栗子:

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏轮子工厂

让我第3不开心的事是:同样是程序员,你竟然选择了偷懒~

好几个人在后台催更C语言教程,其实我也很委屈鸭,呆博去浪去了,然后他就义正言辞的和我说不想排版推文,一听就是想要偷懒的借口,口亨~

10430
来自专栏C语言C++游戏编程

有人@我,你有一份C语言基础大全手册要领取,快来拿!

前两天,有网友问了我一个关于C语言的问题,本着认真装逼的态度,我把大学时学过的C语言课本翻了一遍,终于找到了答案。整理后,现分享给大家!

16720
来自专栏程序员互动联盟

【编程基础】C++ Primer快速入门之七:运算符

一、表达式的定义 什么是表达式?表达式,是由数字、运算符、数字分组符号(括号)、自由变量和约束变量等以能求得数值的有意义排列方法所得的组合(1)。1 + 2是个...

31740
来自专栏Micro_awake web

javascript(二):数据类型&数值

第一部分:数据类型 javascript数据类型通常来说是6种(ES6新增第七种Symbol类型) number:数值 string:字符串 boolean:布...

20350
来自专栏轮子工厂

6. 简单又复杂的“运算符”,建议你看一哈

昨天的《5. 很“迷”的字符与字符串》初稿本来很短的,但是我觉得内容太少了,就加了一些,结果好像就变得特别多〒▽〒。

9430
来自专栏jeremy的技术点滴

排序算法python实现

38890
来自专栏诸葛青云的专栏

C语言中你必须知道的几大排序算法

在实际使用数组的过程中,数组不仅可以存储多个同类型的数据,而且要求这些数据按照某种特征进行排序。例如,学生的成绩,需要按照从高到低的顺序排列,这就需要使用排序算...

8600
来自专栏木子昭的博客

正则 (入门篇)简单来说写好正则表达式的两个要点:写在最后

如果你对正则感兴趣,读完这篇文章,一定会有收获~_^ 简单来说 正则一般代指正则表达式 正则表达式是从"复杂数据"中抽取"有用数据"的公式 ---- 写好正则...

31280
来自专栏ccylovehs

JavaScript基础回顾一(类型、值和变量)

没有答对也不要灰心,本文会巩固你的基础知识,后续会有系列的基础回顾知识,以飨诸君!

8320
来自专栏deed博客

day02笔记

15020

扫码关注云+社区

领取腾讯云代金券