序言
【前端面试】聊聊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...