在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又不是基本数据类型,他是什么呢?这是因为表达式中发生了类型转换。
一般来说,什么数据类型就各回各家,各找各妈才对。比如算数运算时,数据类型就应该是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
原文:https://www.cnblogs.com/qingshanyici/p/10403666.html