JavaScript前端面试宝典

前端面试的敲门砖非 JavaScript 莫属,尤其是类型这一块,面试官真挺爱问。

JS 的基本类型和对象类型要分清,前者像nullundefined这种原始值,后者就是你熟的{}[]这些对象,堆栈存储方式也不一样。

数字类型默认就是浮点数,所以0.1 + 0.2 !== 0.3这种事儿挺常见。别被NaN搞糊涂了,它居然不等于自己,挺反直觉的吧?

typeof判断类型时大多靠谱,但null会被识别成'object',历史遗留问题。如果你要更准,可以用Object.prototype.toString.call()

转换成Boolean的时候要小心,0、空字符串、null这些会变false,剩下的基本都是true。加法那块更神奇,一边是字符串就都转字符串,一边是数字就都转数字,真有点看谁更强的味道。

有趣的是对象参与计算的时候,会先走Symbol.toPrimitive,才是valueOftoString。可以自己重写这些方法,定制想要的行为。

比如下面这段,看看结果你就明白了:

let a = { 
  valueOf: () => 0,
  toString: () => '1',
  [Symbol.toPrimitive]: () => 2
};
1 + a // => 3
'1' + a // => '12'

所以啊,类型这块弄明白了,不光面试好过,平时写代码也少踩坑。如果你想深入了解,可以看看这篇文章

pdf 文件大小:7.97MB