面试常考题JavaScript用七种方式教你判断一个变量是否为数组类型

简介: 我们如何判断一个变量是否为数组类型呢? 这是在前端面试中面试官经常会问到的问题,看似很简单,但想说出多种判断方式也是非常难的,今天来给大家介绍七种方式,别走开, 这肯定会被问到的~继续往下看吧

方法一


使用 instanceof 运算符, 该运算符左边是我们想要判断的变量, 右边则是我们想要判断的对象的类, 例如:


    let arr = [1, 2, 3]console.log(arr instanceof Array)
    //  true     返回true,说明变量arr是数组类型

     

    方法二


    利用构造函数来判断他的原型是否为Array, 用法: 变量.constructor === 变量类型


      let arr = [1, 2, 3]console.log(arr.constructor === Array)
      //  true     返回true,说明变量arr是数组类型


      方法三


      第三种方法利用的一个专门的方法 isArray(), 用法:Array.isArray(变量),返回true,则说明该变量是数组类型;反之,说明该变量不是数组类型


        let arr = [1, 2, 3]console.log(Array.isArray(arr))
        //  true     返回true,说明变量arr是数组类型


        方法四


        第四种方法是调用 Object.prototype.toString.call(),返回true,则说明该变量是数组类型;反之,说明该变量不是数组类型


          let arr = [1, 2, 3]console.log(Object.prototype.toString.call(arr) === '[object Array]')
          //  true     返回true,说明变量arr是数组类型


          方法五


          第五种方式是通过对象的原型方式来判断,直接来看例子


            let arr = [1, 2, 3]console.log(arr.__proto__ === Array.prototype)
            //  true     返回true,说明变量arr是数组类型


            方法六


            第六种方式是通过 Object.getPrototypeOf() 来判断是否为数组类型,例如


              let arr = [1, 2, 3]console.log(Object.getPrototypeOf(arr) === Array.prototype)
              //  true     返回true,说明变量arr是数组类型

              方法七


              第七种方式是通过 isPrototypeOf() 方法来判断是否为数组类型,例如


                let arr = [1, 2, 3]console.log(Array.prototype.isPrototypeOf(arr))
                //  true     返回true,说明变量arr是数组类型


                结束语


                当你面试中被问到如何判断一个变量是否为数组类型的时候,你就将这七种方式脱口而出吧, 一定会让面试官大吃一斤的~


                相关文章
                |
                11天前
                |
                JSON JavaScript 前端开发
                Javascript基础 86个面试题汇总 (附答案)
                该文章汇总了JavaScript的基础面试题及其答案,涵盖了JavaScript的核心概念、特性以及常见的面试问题。
                30 3
                |
                17天前
                |
                前端开发 JavaScript
                JavaScript 面试系列:如何理解 ES6 中 Generator ?常用使用场景有哪些?
                JavaScript 面试系列:如何理解 ES6 中 Generator ?常用使用场景有哪些?
                |
                2月前
                |
                负载均衡 NoSQL 算法
                一天五道Java面试题----第十天(简述Redis事务实现--------->负载均衡算法、类型)
                这篇文章是关于Java面试中Redis相关问题的笔记,包括Redis事务实现、集群方案、主从复制原理、CAP和BASE理论以及负载均衡算法和类型。
                一天五道Java面试题----第十天(简述Redis事务实现--------->负载均衡算法、类型)
                |
                2月前
                |
                JavaScript 前端开发
                常见的JS面试题
                【8月更文挑战第5天】 常见的JS面试题
                53 3
                |
                2月前
                |
                Java
                【Java基础面试七】、请介绍一下实例变量的默认值
                这篇文章介绍了Java中实例变量的默认值:引用数据类型的默认值是null,而基本数据类型的默认值根据其类型分别是0、0L、0.0F、0.0、'\u0000'和false。
                【Java基础面试七】、请介绍一下实例变量的默认值
                |
                2月前
                |
                Java
                【Java基础面试五】、 int类型的数据范围是多少?
                这篇文章回答了Java中`int`类型数据的范围是-2^31到2^31-1,并提供了其他基本数据类型的内存占用和数值范围信息。
                【Java基础面试五】、 int类型的数据范围是多少?
                |
                2月前
                |
                Java 编译器
                不同变量的赋值时机 | 常见的面试题 | 静态代码块
                这篇文章讨论了Java中不同变量的赋值时机,包括基本数据类型、引用数据类型、类变量、实例变量和局部变量,并解释了静态代码块、代码块和构造函数的执行顺序。
                不同变量的赋值时机 | 常见的面试题 | 静态代码块
                |
                2月前
                |
                缓存 JavaScript 前端开发
                【IO面试题 五】、 Serializable接口为什么需要定义serialVersionUID变量?
                serialVersionUID用于标识类的序列化版本,确保在反序列化时类的版本一致性,避免因类定义变更导致的不兼容问题。
                |
                2月前
                |
                存储 JavaScript 前端开发
                2022年前端js面试题
                2022年前端js面试题
                29 0
                下一篇
                无影云桌面