文章目录
如果要问面试官一定会问的是什么或者说面试题一定会出的是什么?那答案一定是类型转换。
但是菜鸟只想说一句,类型转换真的是太多了,好难得记忆,所以这里就总结一下,顺便附征部分面试常见题!
类型转换
类型转换是js中逃不过去的坎,其中包含显示类型转换和隐式类型转换,其中的难点还要属隐式类型转换!
一、显式类型转换
显示类型转换是通过具体的方法,手动的进行转换的方式。
1、数值运算符(+)和负数值运算符(-)
他们的作用可以将任何值转为数值(与 Number()
函数的作用类似),一般用于显示类型转换。
注意:
- 当 + 和 - 作为一元运算符时,会把操作数转换为数字(只能转换纯数字,转不了的转成
NaN
)。 - 二元加法运算符 + 可以对两个数字做加法,也可以做字符串连接操作。有字符串参加 + 时,不会继续转化为数字,而是连接了。
NaN
虽表示不是数字,但是typeof(NaN)
却是number
。(下面《NaN注意》有详细讲解)
2、parseInt
这里需要注意的是:
1、parseInt 只能转化纯数字的字符串 或者 开头是数字的字符串(舍弃后面全部)!
这里让菜鸟想起了一道面试题,之前还是很常见的:
请问输出的是什么?答案是 1, NaN, NaN
这里是因为map接收三个参数,然后 parseInt
默认接收了前两个,所以导致这个问题!
具体解释:
parseInt
的第二个参数这里需要理解清楚一点,是对要转换的数的进制基数,而不是要转换成的进制基数!
所以
而这个才是正确的
3、js提供的包装对象
我们可以通过 JavaScript 内置的一些 API 将一种类型转换为另一种类型,这称为显式类型转化。执行显式类型转换的最简单方法是使用 Boolean()
、Number()
和 String()
、parseInt()
等函数,例如:
String(2 - true); // '1'
'56' === String(56); // true
Number('2350e-2'); // '23.5'
Number('23') + 7; // 30
Boolean('')