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

相关推荐
程序员清洒5 小时前
Flutter for OpenHarmony:GridView — 网格布局实现
android·前端·学习·flutter·华为
VX:Fegn08955 小时前
计算机毕业设计|基于ssm + vue超市管理系统(源码+数据库+文档)
前端·数据库·vue.js·spring boot·后端·课程设计
0思必得05 小时前
[Web自动化] 反爬虫
前端·爬虫·python·selenium·自动化
LawrenceLan5 小时前
Flutter 零基础入门(二十六):StatefulWidget 与状态更新 setState
开发语言·前端·flutter·dart
秋秋小事5 小时前
TypeScript 模版字面量与类型操作
前端·typescript
2401_892000526 小时前
Flutter for OpenHarmony 猫咪管家App实战 - 添加提醒实现
前端·javascript·flutter
Yolanda946 小时前
【项目经验】vue h5移动端禁止缩放
前端·javascript·vue.js
广州华水科技7 小时前
单北斗GNSS形变监测一体机在基础设施安全中的应用与技术优势
前端
EndingCoder7 小时前
案例研究:从 JavaScript 迁移到 TypeScript
开发语言·前端·javascript·性能优化·typescript
阿珊和她的猫9 小时前
React 路由:构建单页面应用的导航系统
前端·react.js·状态模式