【ES6】聊聊ES6中JS新增的两种“原始数据类型”及“类型判断”的四种方法(2)

序言

【前端面试】聊聊ES6中JS新增的两种"原始数据类型"及"类型判断"的四种方法(1)

在上一篇文章中我们引入并分析了ES6新增两种原始数据类型,然后介绍了JavaScript四种判断数据类型方法的其中两种,分别是typeofinstanceof,在今天这篇文章中我会为大家继续讲解剩下的两种数据类型判断方法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...

更多干货内容:【ES6】聊聊ES6中JS新增的两种"原始数据类型"及"类型判断"的四种方法(1)

相关推荐
大猫会长1 分钟前
mac中创建 .command 文件,执行node服务
前端·chrome
旧时光_1 分钟前
Zustand 状态管理库完全指南 - 进阶篇
前端·react.js
snakeshe10103 分钟前
深入理解useState:批量更新与非函数参数支持
前端
windliang3 分钟前
Cursor 排查 eslint 问题全过程记录
前端·cursor
boleixiongdi4 分钟前
# Bsin-App Uni:面向未来的跨端开发框架深度解析
前端
G等你下课7 分钟前
AJAX请求跨域问题
前端·javascript·http
前端西瓜哥8 分钟前
pixijs 的填充渲染错误,如何处理?
前端
snakeshe10108 分钟前
6-1. 实现 useState
前端
呆呆没有脑袋11 分钟前
深入浅出 JavaScript 闭包:从核心概念到框架实践
前端
snakeshe101012 分钟前
用100行代码实现React useState钩子:多状态管理揭秘
前端