var sumFun = function(postsData_){
var sum = 0;
for (var i = 0; i < postsData_.length; i++) {
var x =postsData_[i];
if (x === "00") {
x= 0;
sum += x;
} else {
sum += x;
}
}
return sum;
}
var postsData =['00','0','1',00,2,3];//字符串和数字混合,第1个00字符串转成数字0,相加sum还是数值0,第2个为字符串0,那么就转为字符串拼接,后续都是字符串拼接操作
console.log(sumFun(postsData));//001023 字符串
postsData =[00,1,2,3];//都是数字,数值求和
console.log(sumFun(postsData));//001023
+操作符在JS中,有如下规则
- 当2个操作数都是数字时,执行数值加法操作;
- 当2个操作数都是字符串是,执行字符串拼接操作
- 优先考虑进行字符串拼接
- 如果其中一个操作数为对象,那么就会用调用valueOf方法(日期对象调用toString方法)转成原始类型
- 原始类型包括字符串,数值,布尔类型,null,undefined,
- 操作数都是原始值后,如果一个操作数为字符串,那么另一个操作数也转成字符串,进行字符串拼接操作。
- 否则,2个操作数都将转成数字或NaN,进行加法操作
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…