Discuss
/
JavaScript
/
小明问题
小明问题
Topic sourceparseInt函数默认传递两个参数:1,需要转换成数字的字符串,2,基数(转换成的数字是以什么进制显示,例如2,就是2进制,默认或者等于0,为十进制显示,小于2或者大于36,parseInt()返回NaN). 这样就很好理解这道题出的问题了。map(),参数为一个函数,这个函数默认参数有三个,1:元素值 2:元素值的下标 3:调用者本身(在这里是arr这个数组)。
我们来写一下递归调用的三次,parseInt接收到的函数。 第一次: map参数函数传递过去的参数('1',0,[1,2,3]) parseInt接收到的参数('1',0); parseInt('1',0)//结果 1
第二次:map参数函数传递过去的参数('2',1,[1,2,3]) parseInt接收到的参数('2',1); parseInt('2',1) //显示 NaN
第三次:map参数函数传递过去的参数('3',2,[1,2,3]) parseInt接收到的参数('3',2); parseInt('3',2) //显示 NaN
我是初学者,纯手写的不对的地方请包含。
var arr = ['1','2','3'];
console.log(arr.map(parseInt)); // 奇怪的结果
console.log(arr.map(x => parseInt(x))); //
console.log(arr.map(x => +x)); // x => +x; 匿名函数, 左边是参数, 右边是返回值
function string2int(x, y, z) {
console.log(x, y, z); // map 默认会传3个参数给调用的函数, 元素, 下标, 数组
return parseInt(x);
}
console.log(arr.map(string2int));
- 1
辣椒酱帅
r = arr.map(function(x){return parseInt(x)});