序言
【前端面试】聊聊ES6中JS新增的两种"原始数据类型"及"类型判断"的四种方法(1)
在上一篇文章中我们引入并分析了ES6新增
的两种原始数据类型
,然后介绍了JavaScript四种判断数据类型方法
的其中两种,分别是typeof
和instanceof
,在今天这篇文章中我会为大家继续讲解剩下
的两种数据类型判断方法
:Array.isArray()
和Object.prototype.toString.call()
,那么话不多说,读完这最后一篇让我们拿捏JS中的类型判断
。
Array.isArray()
Array.isArray()
是 JavaScript 中用来确定一个值是否为数组的方法。它返回一个布尔值
,如果值是数组
则返回true
,否则
返回false
。
语法
js
Array.isArray(value)
value
:要检测的值。
- 如果
value
是数组,则返回 true。 - 如果
value
不是数组,则返回 false。
示例
js
let arr = [1, 2, 3];
console.log(Array.isArray(arr)); // 输出:true
let obj = { key: 'value' };
console.log(Array.isArray(obj)); // 输出:false
在上面的例子中,Array.isArray(arr)
返回 true,因为 arr
是一个数组。而 Array.isArray(obj)
返回 false,因为 obj
是一个对象,不是数组。
注意事项
- 在
ECMAScript 5
中引入了Array.isArray()
方法,因此在较老
的浏览器中可能不被支持。 - 如果我们需要在不支持
Array.isArray()
的环境中使用该功能,可以考虑使用兼容性代码
进行处理,或者使用其他方法
来判断一个值是否为数组。
使用场景
-
在编程中,有时候我们需要确定一个值是否为
数组
,以便根据不同的数据类型执行不同的逻辑。 -
可以用于对
函数参数
的类型
进行验证,以确保传入的参数符合预期。
总之,Array.isArray() 是 JavaScript 中用于确定一个值是否为数组的便捷方法,它能够帮助我们在处理各种数据类型时更加灵活和安全。
Object.prototype.toString()
js
console.log(
Object.prototype.toString('Hello') // [object Object]
)
当我们调用Object原型
上的toString
方法时,因为这个方法是不接收任何参数的,所以不管我们传入什么类型的参数都会打印出[object Object]
Object.prototype.toString.call()
我们从上述示例中知道不管在Object.prototype.toString()
中传入什么参数都是输出[object Object]
,但是当我们对这个函数进行调用显示绑定
这个方法并且传入一个数据参数
时是否会发生改变呢。请看下列代码:
js
let s = 'Hello'
function isType(s){
console.log(Object.prototype.toString.call(s) // String
}
isType(s)
返回的结果是[object String]
,并且这个方法可以用来判断所有数据类型
,我这里就不一一列举了,在下面我会为大家详细介绍Object.prototype.toString.call()
这个方法的语法及使用。
语法
js
Object.prototype.toString.call(value)
value
:要获取类型信息的值。
返回值
:返回一个表示value
类型的内部属性[[Class]]
的字符串。
示例
js
let arr = [1, 2, 3];
console.log(Object.prototype.toString.call(arr)); // 输出:[object Array]
let obj = { key: 'value' };
console.log(Object.prototype.toString.call(obj)); // 输出:[object Object]
let num = 123;
console.log(Object.prototype.toString.call(num)); // 输出:[object Number]
在这些示例中,
Object.prototype.toString.call(arr)
返回[object Array]
,表示arr
是一个数组;而Object.prototype.toString.call(obj)
返回[object Object]
,表示obj
是一个对象;Object.prototype.toString.call(num)
返回[object Number]
,表示num
是一个数值。
作用
获取变量的具体类型信息,包括内置对象类型(如 Array、Object、Number 等)和自定义对象类型。
在没有 Array.isArray() 方法的环境中,可以通过
Object.prototype.toString.call()
来判断一个值是否为数组。
注意事项
使用
Object.prototype.toString.call()
可以得到更准确的类型信息,而不仅仅是使用 typeof 来判断类型。在处理复杂数据类型时,
Object.prototype.toString.call()
很有用,因为它可以区分数组、对象、函数等不同类型的数据。
总之,Object.prototype.toString.call()
是一个常用的方法,用于获取变量的具体类型信息,帮助我们更好地处理不同类型的数据。
总结
在本篇文章中我们介绍了剩下的两种数据类型判断方法:
Array.isArray()
是 JavaScript 中用于确定一个值是否为数组
的便捷方法,它能够帮助我们在处理各种数据类型时更加灵活和安全。
Object.prototype.toString.call()
是一个用于获取变量的具体类型信息的方法,在一些没有Array.isArray()
方法的环境中,可以用Object.prototype.toString.call()
方法来判断一个值是否为数组。
如果本篇文章对你有帮助的话,给作者一点鼓励点个赞吧♥
如果想了解更多有用的干货,关注➕收藏 面试不迷茫
所有文章的源码,给作者的开源git仓库点个收藏吧: gitee.com/cheng-bingw...