['1', '2', '3'].map(parseInt)输出结果

128 阅读1分钟

parseInt

语法:parseInt(string, radix);

  • string:要被解析的值。如果参数不是一个字符串,字符串开头的空白符将会被忽略。
  • radix(可选):从 2 到 36,表示字符串的基数。例如指定 16 表示被解析值是十六进制数。请注意,10不是默认值! 如果 radix 是 undefined、0或未指定的,JavaScript会假定以下情况:
  • 如果输入的 string以 "0x"或 "0x"(一个0,后面是小写或大写的X)开头,那么radix被假定为16,字符串的其余部分被当做十六进制数去解析
  • 如果输入的 string以 "0"(0)开头, radix被假定为8(八进制)或10(十进制)。具体选择哪一个radix取决于实现。ECMAScript 5 澄清了应该使用 10 (十进制),但不是所有的浏览器都支持。因此,在使用 parseInt 时,一定要指定一个 radix。
  • 如果输入的 string 以任何其他值开头, radix 是 10 (十进制)。

返回值:NaN

  • radix 小于 2 或大于 36
  • 第一个非空格字符不能转换为数字

Array.prototype.map()

语法:

var new_array = arr.map(function callback(currentValue[, index[, array]]) {
 // Return element for new_array 
}[, thisArg])

['1', '2', '3'].map(parseInt)

['1', '2', '3'].map(parseInt)实际执行如下:

['1', '2', '3'].map((item, index) => {
    return parseInt(item, index)
})

parseInt('1', 0);  // 1
parseInt('2', 1);  // NaN, radix小于2
parseInt('3', 2);  // NaN, '3'不是二进制

所以输出结果为:[1, NaN, NaN]