在js里面3+undefined为什么等于Nan?

3+null=3
但是3+undefined=NaN

ps:这是一道面试题,没答上来。回去查了下null和undefined的区别,
知道了null是obj,而undeinde只是一个全局对象的特殊属性;但是我还是不明白。这两个转成boolean都是false,为什么做相同的运算却得出不同的结果?

我个人理解,isNaN(undefined)是true,也就是NaN,所以3+NaN=NaN。而isNaN(null)为false,即null为数字,当做0处理,所以3+null=3.

null 在转换其他类型时,会有不同的值,数字是0,String 是“”。。。
NaN 加任何都是NaN,这是JS基础书上定义的。
从内存地址上讲,null是一个独立的内存区,3+null时,地址还是3的地址。

3+undefined,因为第一个操作数是整数,所以结果还是数字类型,但是这又不是一个合法的数字,所以是NaN(not a number)

undefined和数组操作转为NaN,数字和NaN操作等于NaN
javascript计算不同数据类型如何转换

这是js里数据类型转换问题,null是对象,转成数字后就是0,undefined是全局变量,转成数字就是NAN,NAN+数字还是NAN

这些js文档都有的,多看一下吧