关注「松宝写代码」,精选好文,每日一题
作者:saucxs | songEagle
2020,实「鼠」不易
2021,「牛」转乾坤
风劲潮涌当扬帆,任重道远须奋蹄!
一、前言
2020.12.23 立的 flag,每日一题,题目类型不限制,涉及到JavaScript,Node,Vue,React,浏览器,http等领域。
本文是「每日一题」第 15 题:【每日一题】面试官问:JS类型判断有哪几种方法?
往期「每日一题」:
1、JavaScript && ES6
第 14 题:【每日一题】面试官问:谈谈你对JS对象的创建和引申
第 13 题[每日一题]面试官问:['1', '2', '3'].map(parseInt)输出,原因,以及延伸?
第 12 题[每日一题]面试官问:JS引擎的执行过程(二)
第 11 题[每日一题]面试官问:JS引擎的执行过程(一)
第 10 题[每日一题]面试官问:详细说一下JS数据类型
第 8 题[每日一题]面试官问:谈谈你对ES6的proxy的理解?
第 7 题[每日一题]面试官问:for in和for of 的区别和原理?
第 6 题[每日一题]面试官问:Async/Await 如何通过同步的方式实现异步?
第 3 道「「每日一题」面试官问你对 Promise 的理解?可能是需要你能手动实现各个特性」
第 2 道「[每日一题]ES6 中为什么要使用 Symbol?」
2、浏览器
第 9 题[每日一题]requestAnimationFrame不香吗?
3、Vue
第 5 道「每日一题」到底该如何回答:vue数据绑定的实现原理?
4、算法
第 4 道「每日一题」与面试官手撕代码:如何科学高效的寻找重复元素?
5、Http
第 1 道「一道面试题是如何引发深层次的灵魂拷问?」
二、JS类型的判断方法
基本数据类型 number string boolean null undefined symbol
引用类型 object function array regExp等
1、typeof
未定义、未初始化:返回
"undefined"
布尔值:返回
"boolean"
字符串:返回
"string"
数值(包括NAN):返回
"number"
对象、null:返回
"object"
, null 表示空对象指针函数:返回
"function"
注意:typeof
可以判断基本类型,无法判断对象的类型或者null
2、instanceof
语法:variableinstanceofconstructor
如果变量是引用类型,可以使用instanceof判断,检测基本类型时,会返回false。
原理:判断变量的原型链上是否有构造函数的prototype属性
如:
// 判断person是否是object类型对象
person instanceof Object
注意:空对象{}的判断问题
let obj1 = {}
console.log(obj1 instanceof Object) // true
let obj2 = Object.create(null)
console.log(obj2 instanceof Object) // false
let obj3 = Object.create({})
console.log(obj3 instanceof Object) // true
3、Object.prototype.toString
所有的数据类型都可以使用此方法进行检测,且非常精准。如:
let obj = {}
Object.prototype.toString.call(obj) === '[object Object]'
三、总结
typeof 适合基本类型和function类型的检测,无法判断null与object
instanceof 适合自定义对象,也可以用来检测原生对象,在不同的iframe 和 window间检测时失效,还需要注意
Object.create(null)
对象的问题{}.toString 适合内置对象和基元类型,遇到null和undefined失效(IE678返回[object Obejct])
各种福利
1、字节内推福利
回复「校招」获取内推码
回复「社招」获取内推
回复「实习生」获取内推
后续会有更多福利
2、学习资料福利
回复「算法」获取算法学习资料
3、往期每日一题
往期「每日一题」:
1、JavaScript && ES6
第 14 题:【每日一题】面试官问:谈谈你对JS对象的创建和引申
第 13 题[每日一题]面试官问:['1', '2', '3'].map(parseInt)输出,原因,以及延伸?
第 12 题[每日一题]面试官问:JS引擎的执行过程(二)
第 11 题[每日一题]面试官问:JS引擎的执行过程(一)
第 10 题[每日一题]面试官问:详细说一下JS数据类型
第 8 题[每日一题]面试官问:谈谈你对ES6的proxy的理解?
第 7 题[每日一题]面试官问:for in和for of 的区别和原理?
第 6 题[每日一题]面试官问:Async/Await 如何通过同步的方式实现异步?
第 3 道「「每日一题」面试官问你对 Promise 的理解?可能是需要你能手动实现各个特性」
第 2 道「[每日一题]ES6 中为什么要使用 Symbol?」
2、浏览器
第 9 题[每日一题]requestAnimationFrame不香吗?
3、Vue
第 5 道「每日一题」到底该如何回答:vue数据绑定的实现原理?
4、算法
第 4 道「每日一题」与面试官手撕代码:如何科学高效的寻找重复元素?
5、Http
第 1 道「一道面试题是如何引发深层次的灵魂拷问?」
谢谢支持
1、喜欢的话可以「分享,点赞,在看」三连哦。
2、作者昵称:saucxs,songEagle,松宝写代码。「松宝写代码」公众号作者,每日一题,实验室等。一个爱好折腾,致力于全栈,正在努力成长的字节跳动工程师,星辰大海,未来可期。内推字节跳动各个部门各个岗位。
3、长按下面图片,关注「松宝写代码」,是获取开发知识体系构建,精选文章,项目实战,实验室,每日一道面试题,进阶学习,思考职业发展,涉及到JavaScript,Node,Vue,React,浏览器,http等领域,希望可以帮助到你,我们一起成长~