typeof不能检测js对象是否是数组的原因是: typeof会将object, array和null都返回为object

下面哪些方式在同一个窗口下能够检测一个js对象是数组类型?

A
Array.isArray()

B
instanceof

C
typeof

D
Object.prototype.toString.call()

正确答案:ABD

A:Array 为 js 的原生对象,它有一个静态方法:Array.isArray(),能判断参数是否为数组

B:instanceof 运算符返回一个布尔值,表示对象是否为某个构造函数的实例(题目中 instance of , emem)

C: typeof 能判断类型有:number、string、boolean、symbol、undefined、function; object、array、null 的变量都返回 object

D:Object.prototype.toString() 为 Object 对象的实例方法,默认情况下(即不重写该方法),返回参数的类型字符串。
console.log(Object.prototype.toString.call(['a']).slice(8,-1)); // 'Array'

A选项没啥好说的,原生支持的方法

B选项 instanceof 运算符返回一个布尔值,表示对象是否为某个构造函数的实例,这时可能就有同学要提出疑问了:

我用这个方法,似乎无法分辨数组与对象的区别啊, arr instanceof Array/Object 似乎都会返回 true !这不是不严谨吗?
注意审题:检测一个JS对象是数组类型,既定的事实是我们当前是一个对象,然后要判断它是否为数组,不懂直接看图解

C选项 typeof 能判断类型有:number、string、boolean、symbol、undefined、function;

object、array、null的变量都返回 object,所以错

D选项直接上图


__EOF__

本文作者龙陌
本文链接https://www.cnblogs.com/longmo666/p/17825752.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   龙陌  阅读(112)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示