关于parseInt(string, radix)方法

关于parseInt方法

  • 概述
  • 语法
  • 参数说明
  • 返回值
  • 特别说明
  • 案例解析

概述

依据指定基数 [ 参数 radix 的值],把字符串 [ 参数 string 的值] 解析成整数。

语法

parseInt(string[, radix])

参数说明

  • string:要转换的字符串。如果不是字符串,则会使用ToString隐式地将其转换为字符串。
  • radix:字符串转换的基数,是一个2~36之间的整数。注意:10不是默认值

返回值

  • 十进制整数
  • NaN(一下几种情况会返回NaN)
    • radix的值<2或>36
    • 第一个非空字符不能转换为数字
    • 第一个非空字符不是radix基数范围内的字符

特别说明

radix是undefined、0或未指定时,分以下几种情况考虑:

1.若string是以“0x”或“0X”开头,那么radix被假定为16,即字符串的其余部分会被当成16进制去解析;

parseInt("0x21");             // 33, 16*2 + 1
parseInt("0Xff", 0);          // 255, 16*15 + 15 
parseInt("0xa1", undefined);  // 161, 16*10 + 1 

2.若string是以“0(o)”开头,radix被假定为8(八进制)或10(十进制),具体使用哪一个取决于实现。(ES5之前是八进制,ES5明确表示使用十进制,但是有些环境未实现)。

// firefox79.0 测试结果:使用十进制解析
parseInt("015"); // 15
parseInt("08");  // 8

3.若String是以其他任何值开头,则radix是10(十进制)。

parseInt("500");  // 500
parseInt("404");  // 404
parseInt("101");  // 101

案例解析

parseInt(100, 2);  // 4, 1*2^2
parseInt(15, 2);   // 1, 5不是有效的二进制数,解析到1就停止,1*2^0
parseInt(3, 2);    // NaN, 二进制只有0和1,3不是有效的二进制数

parseInt(027, 8);  // 19, 027先被转换成十进制的字符串"23",再以8位基数将"23"转换为十进制整数,2*8^1 + 3*8^0 = 19
parseInt(0x16, 16); // 34,原理同上
parseInt(0o50, 8);  // 32, 先转换成十进制的字符串"40",再以8位基数,转换为十进制整数32

参考资料:
parseInt-Javascript | MDN
Javascript parseInt()

你可能感兴趣的:(Javascript,javascript)