JavaScript前端面试宝典
前端面试的敲门砖非 JavaScript 莫属,尤其是类型这一块,面试官真挺爱问。
JS 的基本类型和对象类型要分清,前者像null
、undefined
这种原始值,后者就是你熟的{}
、[]
这些对象,堆栈存储方式也不一样。
数字类型默认就是浮点数,所以0.1 + 0.2 !== 0.3
这种事儿挺常见。别被NaN
搞糊涂了,它居然不等于自己,挺反直觉的吧?
typeof
判断类型时大多靠谱,但null
会被识别成'object'
,历史遗留问题。如果你要更准,可以用Object.prototype.toString.call()
。
转换成Boolean的时候要小心,0
、空字符串、null
这些会变false
,剩下的基本都是true
。加法那块更神奇,一边是字符串就都转字符串,一边是数字就都转数字,真有点看谁更强的味道。
有趣的是对象参与计算的时候,会先走Symbol.toPrimitive
,才是valueOf
、toString
。可以自己重写这些方法,定制想要的行为。
比如下面这段,看看结果你就明白了:
let a = {
valueOf: () => 0,
toString: () => '1',
[Symbol.toPrimitive]: () => 2
};
1 + a // => 3
'1' + a // => '12'
所以啊,类型这块弄明白了,不光面试好过,平时写代码也少踩坑。如果你想深入了解,可以看看这篇文章。
7.97MB
文件大小:
评论区