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'
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 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)