【前端面试】数据类型与类型检测

1、在JS中有哪些数据类型?

(1)JavaScript中的数据类型有6种:

基础数据类型5种:Boolean、String、Number、undefined、null

复杂数据类型1种:Object

(2)在ES6中,新增了一种symbol类型,表示独一无二的值。并且symbol类型在初始化的时候不需要使用new操作符。

2、如何对数据类型进行判断?

对于普通的数据类型来说,使用typeof来进行判断,数据类型有6种,typeof的返回的值也有6种(在es6中是7种,包括symbol类型的返回值),但是在typeof的返回值里面,null和Object返回的都是Object,而其余的都是对应的字符串,包括function。

3、如何对Object类型进行判断?

(1)使用instanceof判断;

(2)使用原型链上的constructor判断;

注意:当我们的页面中存在多个frame,并且我们的判断是在两个iframe之间的时候,就很有可能出现问题了。由于每个iframe都属于自己的window对象,跨frame实例化的对象彼此是不共享原型链的,因此导致上述检测代码失效。

(3)使用Array.isArray() 方法判断;

注意:不支持IE8之前的版本

(4)使用Object.prototype.toString.call()方法判断

说明:普通对象直接调用了顶级原型Object上的toString方法, 而数组、函数以及这些基本包装对象它们继承了Obejct的同时, 重写了一些方法,在查找toString方法的时候,一定是自己原型链上的方法优先被找到,所以我们就需要利用call调用顶级原型Object.prototype上的toString方法。

关于Object.prototype.toString()方法,这里有一篇不错的文章:

JavaScript类型检查与内部属性[[Class]]

转载于:https://juejin.im/post/5b7f5c2a51882543094b2a2c

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值