1. /**
    2. * Radix
    3. *
    4. * parseInt(string, redix)
    5. *
    6. * 解析一个字符串(string)并返回指定基数(Radix)的十进制整数
    7. * Radix 2-36之间的整数, 要解析成整数的字符串是多少进制 -> 进制数转换成十进制整数
    8. */
    9. /**
    10. * 参数
    11. *
    12. * string - 如果不是字符串 -> toString(开头的空白忽略)
    13. * radix -> 2-36 16要解析的整数字符串是16进制
    14. *
    15. * 返回值
    16. * 能解析返回的整数
    17. * 返回NaN:
    18. * radix 小于2或大于36, 0除外
    19. * 未填写参数
    20. * 字符串第一个字符不能被正常转换数字的情况
    21. * 字符串第一个字符不符合进制要求的情况
    22. */
    23. console.log(parseInt('123', 5));
    24. /**
    25. * 把 '123' 作为5进制 -> 十进制
    26. * console.log('3'.toString(2));
    27. * 数字 x 进制数 ^ (数字位数 - 1)
    28. * 1 * Math.pow(5, 2) + 2 * Math.pow(5, 1) + 3 * Math.pow(5, 0)
    29. */
    30. // 16进制 -> 0 - f
    31. console.log(parseInt('0x629eb', 16));
    32. /**
    33. * 6 * Math.pow(16, 4) + 2 * Math.pow(16, 3) + 9 console.log('3'.toString(2));* Math.pow(16, 2) + 14 * Math.pow(16, 1) + 11 * Math.pow(16, 0)
    34. */
    35. // 返回NaN
    36. console.log(parseInt('111', 0)); // 111
    37. console.log(parseInt('a12'));
    38. console.log(parseInt());
    39. console.log(parseInt('321', 2));
    40. /**
    41. * 流程
    42. * 1. 可能会转字符串 toString
    43. * 2. 对字符串进行整数解析
    44. * 3. 返回整数或NaN
    45. *
    46. * parseInt的字符串不符合radix基数的数字要求
    47. *
    48. *
    49. * 支持 + -
    50. * 去掉开头的空格
    51. *
    52. * 1. 去掉符号
    53. * 2. 对数字进行解析
    54. *
    55. * parseInt radix 默认值 -> 10进制错的
    56. *
    57. * 0x 0X -> 16进制
    58. * 0 -> 8进制, 10进制 (ES5规范 10进制) -> 都要写清楚radix
    59. * 其他开头的 -> 10进制
    60. *
    61. */
    62. /**
    63. * toString
    64. * 数字转换为相应进制的字符串数字
    65. */
    66. // 官方 严格判断是够为整型
    67. var filterInt = function (value) {
    68. if(/^(\-|\+)?([0-9]+|Infinity)$/.test(value)) {
    69. return Number(value);
    70. }
    71. return NaN;
    72. }

    1.toString, 100..toString