首页 > 编程 > JavaScript > 正文

JavaScript的一个parseInt易错点

2019-11-08 00:42:08
字体:
来源:转载
供稿:网友

参考:廖雪峰老师的javascript教程 小明希望利用map()把字符串变成整数,他写的代码很简洁:

'use strict';var arr = ['1', '2', '3'];var r;r = arr.map(parseInt);alert('[' + r[0] + ', ' + r[1] + ', ' + r[2] + ']');

结果竟然是[1, NaN, NaN],小明百思不得其解,请帮他找到原因并修正代码。

arr.map会为调用的函数传入以下三个参数: 1、currentValue,数组中当前被传递的元素。 2、index,数组中当前被传递的元素的索引。 3、array,调用 map 方法的数组

而parseInt可以接受两个参数: 1、string:必需。要被解析的字符串。 2、radix:可选。表示要解析的数字的基数。该值介于 2 ~ 36 之间。 如果省略该参数或其值为 0,则数字将以 10 为基础来解析。如果它以 “0x” 或 “0X” 开头,将以 16 为基数。 如果该参数小于 2 或者大于 36,则 parseInt() 将返回 NaN

所以实际上是执行了: parseInt(‘1’,0,[‘1’,’2’,’3’]);//1 parseInt(‘2’,1,[‘1’,’2’,’3’]);//NaN parseInt(‘3’,2,[‘1’,’2’,’3’]);//NaN

所以修正的代码应为:

r = arr.map(function(x) { return parseInt(x,10) });或者r = arr.map(function(x) { return parseInt(x) });
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表