返回

面试经典解析:揭秘“parseInt”的进制谜团

前端

进入互联网大厂,通过面试是必经之路。一道在腾讯和百度等科技巨头面试中频频出现的网红题目,让不少程序员绞尽脑汁。今天,我们就来剖析这道题的精髓,揭秘“parseInt”函数在进制转换中的玄机。

一、面试题的奥秘

这道面试题的代码如下:

parseInt('1', 0) == 1 && parseInt('2', 1) == NaN && parseInt('3', 2) == 3

乍一看,代码十分简单,但它却暗藏着进制转换的玄机。让我们逐一分析:

  1. parseInt('1', 0) == 1: radix(进制)值为 0,相当于把字符串 "1" 直接转换成十进制数字,结果为 1。

  2. parseInt('2', 1) == NaN: radix 值为 1,该参数无效(小于 2 或大于 36),因此返回 NaN(非数字)。

  3. parseInt('3', 2) == 3: radix 值为 2,将字符串 "3" 转换成二进制数字,再转换成十进制,结果为 3。

二、进制转换的本质

要理解这段代码,必须首先掌握进制转换的本质。进制转换指的是将一个数字在不同的进制(如二进制、八进制、十进制、十六进制)之间转换。

每个进制都有一个基数,例如十进制的基数为 10,二进制的基数为 2。要将一个数字从一个进制转换为另一个进制,需要将其逐位转换,然后乘以相应的基数幂。

三、parseInt 函数的奥妙

parseInt 函数是 JavaScript 中用于将字符串转换成整数的函数,它接受两个参数:

  1. str: 要转换的字符串
  2. radix: 转换的进制(可选,默认为 10)

当 radix 为 0 时,parseInt 会自动根据字符串中的数字类型推断进制。当 radix 为非 0 时,会强制将字符串转换为指定的进制。

四、面试题的解惑

根据上述原理,面试题中的代码可以这样理解:

  1. parseInt('1', 0) 将字符串 "1" 转换成十进制,结果为 1。
  2. parseInt('2', 1) 由于 radix 无效,因此返回 NaN。
  3. parseInt('3', 2) 将字符串 "3" 转换成二进制数字 11,然后转换为十进制,结果为 3。

由此可见,面试题的重点在于考察对进制转换和 parseInt 函数的理解。通过灵活运用 radix 参数,可以实现不同的进制转换,从而解决复杂的问题。

五、结语

这道网红面试题虽然简单,但它巧妙地考察了对进制转换和 parseInt 函数的掌握程度。掌握这些基础知识,对于程序员来说至关重要。通过深入理解面试题背后的原理,我们不仅能提升面试技巧,还能增强对进制转换的认识,为今后的编程实践奠定坚实的基础。