//我也试了一下大数相加 function add(a,b){ if(typeof a !== 'string'||typeof b !== 'string'){ console.error('require two strings') return } if(isNaN(+a)||isNaN(+b)){ console.error('require to be normal number string') return } var min = a.length>b.length?b:a var max = a.length<b.length?b:a var len = min.length var lenmax = max.length var upgrade = 0 if(a.length===b.length){ min = a; max = b; } var res = [] while(len--){ var sum = parseInt(min[len])+parseInt(max[--lenmax]) if(upgrade){ sum += upgrade upgrade = 0 } if(sum>=10){ sum -= 10 upgrade = 1 } res.unshift(sum) } res = res.join("") if(upgrade){ if(lenmax-len-1>0){ var mid = +max.slice(lenmax-len-2,lenmax-len-1)+1 res = max.slice(0,lenmax-len-2)+mid+res }else if(lenmax-len===1){ res = 1+parseInt(max.slice(0,1))+res } }else if(a.length!==b.length){ res = max.slice(0,lenmax-len-1) + res } return res }