当前位置:   article > 正文

JS的加法规则_js 累加 pinjie

js 累加 pinjie

JS的加法规则

示例

数值+数值:

1 + 1 = 2;
1 + NaN = NaN;
Infinity + - Infinity = NaN;
Infinity + Infinity = Infinity;
-Infinity + - Infinity = -Infinity;
+0 + +0 = +0;
+0 + -0 = +0;
-0 + -0 = -0;
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

字符串 + 字符串

'hello ' + 'world' = 'hello world'
  • 1

直接拼接
字符串 + 数值

'10' + 10.10 = '1010.1'
'1' + 2 + 3 + 4 = '1234'
1 + 2 + 3 + '4' = '64'
1 + (2 + '3') + 4 = '1234'
  • 1
  • 2
  • 3
  • 4

字符串和数值相加会先从左往右运算,然后把对应数值先转换为字符串,10.10会被转换成’10.1’。加法运算哪怕只有一个字符串,也会把整个运算结果变成字符串

字符串 + 非数值

'1' +  NaN = '1NaN'
'1' + Infinity = '1Infinity'
'1' + -Infinity = '1-Infinity'
'1' + true = '1true'
'1' + false = '1false'
'1' + undefined = '1undefined'
'1' + null = '1null'
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

依旧会把非字符串强制转换为字符串然后拼接

字符串 + 数组

'1' + [] = '1' 
'1' + [123] = '1123'
'1' + [, , ,] = '1,,'
'1' + [123, 456, 789, 'aaa'] = '1123,456,789,aaa'
  • 1
  • 2
  • 3
  • 4

数组转换为字符串会是把里面的值转换成字符串,[]会被转换成"",但是如果是保留位置的数组,则会去除最后一个逗号转换成字符串

字符串 + 函数

'1' + function() {console.log(123)} = '1function() {console.log(123)}'
  • 1

函数会被转换成字符串,然后拼接

字符串 + 对象

'1' + {} = '1[object Object]'
'1' + {a: 1} = '1[object Object]'
  • 1
  • 2

会先把对象转换成字符串 ‘[object Object]’ 再拼接

数值 + 非数值

1 + NaN = NaN
1 + undefined = NaN
1 + Infinity = Infinity
1 + -Infinity = -Infinity
1 + null = 1
1 + true = 2
1 + false = 1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

数值 + 数组

[] + 1 = '1'
[123] + 1 = '1231'
[123, 456, 789] + 1 = '123,456,7891'
[, , ,] + 1 = ',,1'
[, 1, 1,] + 1 = ',1,11'
{} + 1 = 1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

数组 + 函数

[] + function() {console.log(123)} = 'function() {console.log(123)}'
[1, 2] + function() {console.log(123)} = '1,2function() {console.log(123)}'
  • 1
  • 2

数组 + 对象

[] + {} = '[object Object]'
[1,2] + {} = '1,2[object Object]'
[1,2] + {a: 1} = '1,2[object Object]'
  • 1
  • 2
  • 3

数组 + 数组

[1,2] + [3, 4] = '1,23,4'
[] + [1,2] = '1,2'
  • 1
  • 2

对象 + 对象

{} + {} = '[object Object][object Object]'
({}) + ({}) = '[object Object][object Object]'
({}) + ({a: 1}) = '[object Object][object Object]'
  • 1
  • 2
  • 3

对象 + 函数

{} + function() {console.log(123)} = '[object Object]function() {console.log(123)}'
  • 1

对象 + 数组 (特例)

{} + [] = 0
{} + ['1'] = 1
{} + [1] = 1
{} + [1, 2] = NaN
{} + ['1', '2'] = NaN
({}) + [] = '[object Object]'
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

函数 + 函数

function() {console.log(123)} + function() {console.log(123)}   报错
(function() {console.log(123)}) + (function() {console.log(123)}) = 'function() {console.log(123)}function() {console.log(123)}'
  • 1
  • 2

综上

1、数值与数值相加直接求和
2、任意数据类型 + NaN = NaN
3、Infinity + - Infinity = NaN
4、只有-0 + -0 = -0,其余得+0
5、字符串 + 任意数据,先将其他转换为字符串,再拼接,小数最后一位为0时转字符串时该0会被去除
6、[, , ,]数组最后为逗号 , 时,会去除最后一个逗号 , 再将数组内部元素转成字符串
7、空数组[]转成字符串为 “”
8、正常情况含有元素的数组会把里面的元素拼接成字符串包含逗号 , ,
9、正常情况{} 转成字符串无论里面是否为空均转为[object Object],({})也是转成[object Object]
10、特例:{} + []或者{} + [1]或者{} + [‘1’]会直接将 {}转成0 []转成0 [‘1’]转成1
12、特例:{} + [1, 2] = NaN
13、函数也会被整体转成字符串,但 函数 + 函数会报错, (函数) + (函数) 才会进行两个转换之后的字符串拼接

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/63507
推荐阅读
相关标签
  

闽ICP备14008679号