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

相关推荐
霸王蟹3 分钟前
常见面试题:Webpack的构建流程简单说一下。
前端·笔记·学习·webpack·node.js·vue
黄暄7 分钟前
Linux项目部署全攻略:从环境搭建到前后端部署实战
java·linux·运维·服务器·前端·后端·持续部署
island131433 分钟前
JAVA Web 期末速成
java·开发语言·前端
独行soc1 小时前
2025年渗透测试面试题总结-安恒[实习]安全服务工程师(题目+回答)
linux·数据库·安全·web安全·面试·职场和发展·渗透测试
小峰编程1 小时前
Python函数——万字详解
linux·运维·服务器·开发语言·前端·网络·python
海盐泡泡龟1 小时前
Javascript本地存储的方式有哪些?区别及应用场景?(含Deep Seek讲解)
开发语言·javascript·ecmascript
11054654012 小时前
23、电网数据管理与智能分析 - 负载预测模拟 - /能源管理组件/grid-data-smart-analysis
前端·能源
开发者小天2 小时前
React中startTransition的使用
前端·react.js·c#
@PHARAOH3 小时前
WHAT - 缓存命中 Cache Hit 和缓存未命中 Cache Miss
前端·缓存
Sonetto19993 小时前
【Python】【面试凉经】Fastapi为什么Fast
python·面试·flask·fastapi·凉经