大数相加运用了很多运算符的知识
function addBig(a, b){
let temp = 0,
res = '';
a = a.split('');
b = b.split('');
while( a.length || b.length || temp){
temp += ~~a.pop() + ~~b.pop();
res = (temp % 10 ) + res; //字符串拼接
temp = temp > 9 ? 1 : 0; //判断进位
}
return res.replace(/^0+/g, ''); //str.replace(要被替换的字符串/正则对象,替换文本)
}
做个解释:
使用~操作符进行取反是会将字符串转换为数字的,在进行一个取反操作,转换为了字符串本身代表的数字考虑下我们数组循环 的最后为空时,[].pop()的结果为undefined,而 Number(undefined)的结果为NaN,~NaN的结果为-1, ~~NaN的结果 为0,当 你使用NaN进行加法运算时,一切结果都没有了意义。所以这个地方必须为~~a.pop(), 而不能使用Number进行强制转换。