NaN与Null与undefiined的关系

 

在js中,定义一个变量需要通过关键字var来定义,定义的变量可以是字符串、数字等等都行。但是如果你只是定义了一个变量,没有给他赋值,那么它就默认为'undefined'。例如

1 var name;
2 console.log(name);//输出为:undefined
3 var age=18;
4 console.log(age);//输出为:18

但是,undifined、null、NaN之间到底是什么关系呢?为什么undifined会变成NaN呢?NaN又不是基本数据类型,他是什么呢?这是因为表达式中发生了类型转换。

NaN:Not a Number,它是js中的一个特殊的数值,也就是“非数字”。在数学运算时产生了为止的结果或错误,js就会返回NaN,它表示运算结果是一个非数字。例如,用0除以0,就是一个非数字。

 而undefined与null,就是没有关系。

null,是用于定义空的或不存在的应用,表示一个变量被赋予了一个空值。而undefined则表示该变量尚未赋值。

 

一般来说,什么数据类型就各回各家,各找各妈才对。比如算数运算时,数据类型就应该是number。字符串连接时,数据类型就应该是string。但是JS心大,允许云算法对不匹配的操作数进行计算。在这个过程中,不匹配的操作数就发生了类型转换。

他们的转换遵循一下的规则。

undefined转数值:NaN

null转数值:0

字符串转数值:如果内容是数字,则转为number;如果内容是非数字的字符串,则转为NaN;如果一半数字一半字符串呢?就是下面这种情况:

var i=1+1;
console.log(i);//2
var j='1a'+2;
console.log(j);//1a2

 

posted @ 2019-02-19 22:06  qingshanyici  阅读(290)  评论(0编辑  收藏  举报