【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)

相关推荐
Raink老师3 小时前
【AI面试临阵磨枪-70】Agent 系统如何做分布式调度、跨服务协作、故障恢复?
人工智能·面试·职场和发展
tedcloud1233 小时前
RTK部署教程:构建稳定的AI Workflow环境
服务器·javascript·人工智能·typescript·ocr
Raink老师3 小时前
【AI面试临阵磨枪-71】如何用 AI 优化推荐系统、内容审核、广告创意、搜索体验?
人工智能·面试·职场和发展
Raink老师4 小时前
【AI面试临阵磨枪-72】电商全场景 AI Agent 设计(商品咨询 / 订单 / 物流 / 售后 / 退款)
人工智能·面试·职场和发展
ZC跨境爬虫4 小时前
跟着 MDN 学CSS day_16:(深入掌握背景与边框的艺术)
前端·css·ui·html·tensorflow
道里7 小时前
花了 5 万刀用 AI 写代码之后,这是我的全部经验
前端·人工智能
Royzst7 小时前
xml知识点
java·服务器·前端
IT_陈寒7 小时前
React useEffect闭包陷阱差点把我整失业了
前端·人工智能·后端
kyriewen8 小时前
推行AI写代码一年后,Code Review变成了新的加班理由
前端·ai编程·cursor
前端环境观察室8 小时前
给 Agent Browser Workflow 加一层可观测性:Trace、Snapshot 和 Review Queue
前端