"1 2 3 4 5".replace(/\d/g, parseInt);的返回结果是 "1 Nan 3 4 5"想知道为什么不是"1 2 3 4 5";看了许多帖子,也没看懂为什么只有第二个元素会变成NaN,其他的元素转换成了相应的Int值
而且,你可以尝试着增加一个a或者删除几个数,你会发现千奇百怪的结果,所以,按规范的来写可能比较好,出错率低一点
var str="1 2 3 4 5".replace(/\d/g, function(){
console.log(arguments);
return parseInt(arguments[0])
});
这样写就没问题了,大概原因是因为你的这个字符串中间有空格导致的,而你其实是要将捕获到的数字进行parseInt,这样写就好了
你这个作用是什么, 即使返回12345那还不是一样是字符串
replace方法实现上,对于参数是函数的做了单独处理, 最终都是要调用 apply 或call方法。只能说能说这个过程出现了问题。
我尝试了下,不过没有找到。。
如果楼主时间充裕可以去看看