js判断变量数据类型的几种常用方法

文章介绍了在JavaScript中,使用typeof、Array.isArray()、Object.prototype.toString.call和instanceof等方法来判断不同数据类型的用法和准确性。typeof可以识别基本类型,但对数组和对象识别不足;Array.isArray()专门用于检测数组;Object.prototype.toString.call则能提供更精确的类型信息;instanceof则用于引用类型的检测。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、typeof()
识别所有值类型;number,string,boolean
识别函数类型,typeof(函数a)会返回Function
识别引用类型,但是无法区分对象,数组以及 null,都会返回Object
NaN 会被识别为 number,尽管 NaN 是 Not-A-Number 的缩写,意思是"不是一个数字"。

识别数组需要用Array.isArray(),返回值是true/false

 <script>
        //判断变量类型
        function type(num) {
            return typeof num
        }

        // 判断列表
        const num1 = 1
        console.log(type(num1))    //num

        const num2 = '66'
        console.log(type(num2))   //string

        const num4 = { id: '1', nbame: '11' }
        console.log(type(num4))    //object

        const num5 = [1, 2, 3]
        console.log(type(num5))   //object,数组可用Array.isArray(),返回true/false

        const x = function () { }
        const num6 = x
        console.log(type(num6))   //funtion

        // 判断数组
        function sum(a) {
            return Array.isArray(a)
        }
        const fn = [1, 2, 3]
        console.log(sum(fn))     //true
    </script>

二、Object.prototype.toString.call
使用Object.prototype.toString.call 的方式来判断一个变量的类型非常准确,会返回一个[object XXX] 样式的字符串

  <script>

        // 二,Object.prottotype.toString.call()
        const a = 6
        console.log(Object.prototype.toString.call(a))   //[object Number]

        const b = '6'
        console.log(Object.prototype.toString.call(b))      //[object Object]

        const c = { a: 6 }
        console.log(Object.prototype.toString.call(c))    //[object Object]

        const d = function () { }
        console.log(Object.prototype.toString.call(d))    //[object Function]

        const e = [1, 2, 3]
        console.log(Object.prototype.toString.call(e))    //[object Array]
    </script>

三、instanceof方法
用来检测引用数据类型,值类型都会返回 false。

<script>
       
        // 三,instanceof方法 ,返回值true/false
        var x1 = []
        console.log(x1 instanceof Array);  // 输出:true

        var y1 = {}
        console.log(y1 instanceof Object);  // 输出:true

        var z1 = function () { };
        console.log(z1 instanceof Function);  // 输出:true
    </script>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值