js加法运算 你真的懂吗?

63 阅读1分钟

js加法运算 你真的懂吗?

首先思考下下面代码的输入结果

null + null
undefined + undefined
null + undefined
null + 1
undefined + 1
NaN + NaN

[1] + 1

这里看答案(是否和你想的结果一样)

null + null // 0
undefined + undefined // NaN
null + undefined // NaN
null + 1 // 1
undefined + 1 // NaN
NaN + NaN // NaN

[1] + 1 // '11'

分析

这里我画了一张图,看到这张图估计都能明白了 加法运行法则.jpg

我们知道原始类型有:

  1. Number
  2. String
  3. Boolean
  4. null
  5. undefined
  6. Symbol

根据上图的分析步骤我们把 null undefined转为数字, NaN是一种特殊得数字。

Number(null) // 0
Number(undefined) // NaN

很容易得出

null + null // 0
undefined + undefined // NaN
null + undefined // NaN
null + 1 // 1
undefined + 1 // NaN
NaN + NaN // NaN

针对含有对象类型的 [1] + 1

我们先把[1]调用valueOf,得到结果依然是 对象, 再调用toString得到结果是 '1',已经是原始类型中的字符串了

[1].valueOf() // [1]
[1].toString() // '1'
// 结果
'1' + 1  // '11'

总结:加法运算最后都需要把“+”号两端得值转为 原始类型再计算,转为原始类型得方法按照图中得描述即可。