走进前端——JavaScript(2)_类型检测

发布时间:2022-06-26 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了走进前端——JavaScript(2)_类型检测脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

前言

作者:迷途の羊 
在这里分享学习自己的经历,希望可以帮助到初学前端的旁友
成为一个更好的前端开发者
大学在读前端菜鸡  若文中有误,感谢指正

DAY6 JavaScript测定数据类型、操作符*

JavaScript测定数据类型

首先,我们介绍一下JavaScript的数据类型:JavaScript的数据类型分为两种,一种是基本数据类型,一种是引用数据类型。 基本数据类型有:number,string,null,undefined,boolean,symbol;他们的值都是存放在中,因为他们大小是固定的,而且是经常都会被使用到的,创建方法一般来说为let x = ‘迷途の羊’,直接赋值即可,所以存放在栈中更容易的对他们进行存取操作。 引用数据类型有:object,math,function,string,number,regexp,date,array等均为引用数据类型,引用数据类型的大小是不固定的,创建方法一般来说为let x = new Object()//或其他,引用数据类型均存放在中,因为他们大小不固定,而且大多为持久化数据,它们的值都是对象。 我们会发现,在基本数据类型和引用数据类型中均有string,number,由此可以探讨一下,引用数据类型和基本数据类型到底如何区分呢?下面介绍几个关键字:

  1. typeof typeof可以清晰的判别基本数据类型,示例如下:
        let a = 1,
            b = 'zy',
            c = true,
            d = undefined,
            e = null,
            f;
        console.log(typeof a)
        console.log(typeof b)
        console.log(typeof c)
        console.log(typeof d)
        console.log(typeof e)
        console.log(typeof f)

走进前端——JavaScript(2)_类型检测

由此可见,typeof可以判断基本数据类型,注意:null的typeof为object。还可以看出,当使用var或let但未赋值时,默认值为undefined

    let g = new Number(2)
    console.log(typeof g)

走进前端——JavaScript(2)_类型检测

可见,即便是给g赋值一个Number对象,也只能判断出它为object!

  1. instanceof

instanceof可以清楚的判断引用数据类型,示例如下:

        let a = new Object(),
            b = new String('zy'),
            c = new RegExp(/[0-9]/),
            d = new Number(1),
            e = new Date(),
            f = {};
        console.log(a instanceof Object)


        console.log(b instanceof Object)
        console.log(b instanceof String)

        console.log(c instanceof Object)
        console.log(c instanceof RegExp)

        console.log(d instanceof Object)
        console.log(d instanceof Number)

        console.log(e instanceof Object)
        console.log(e instanceof Date)

        console.log(f instanceof Object)

走进前端——JavaScript(2)_类型检测

我们这个时候可以发现一些细节 : Number、String等判断它是否属于Object时均是true,可以发现,他们均是从Object继承下来的(其实instanceof是判断某个对象的原型链上是否有instanceof右边的对象名)。 然而,他无法确定基本数据类型,示例如下:

        let a = 1,
            b = 'zy'

        console.log(a instanceof Object)
        console.log(a instanceof Number)

        console.log(b instanceof Object)
        console.log(b instanceof String)

走进前端——JavaScript(2)_类型检测

可见,即便是检测对应的对象也无法检测出正确的数据类型。 综合可述,在检测基本数据类型和引用数据类型要区分使用不同的方法

  1. Object.prototype.toString.call() 该方法可以精确判断出数据类型
        var toString = Object.prototype.toString;
        console.log(toString.call(1));                 
        console.log(toString.call(true));              
        console.log(toString.call('zy'));              
        console.log(toString.call([]));                
        console.log(toString.call({}));                
        console.log(toString.call(function () { }));   
        console.log(toString.call(undefined));         
        console.log(toString.call(null));   

走进前端——JavaScript(2)_类型检测

JavaScript操作符

js的操作符和c语言等其他语言大同小异,有一元操作符,位操作符,布尔操作符,指数操作符,相等操作符等。 关于相等操作符的区别是最大的,在这里细讲一下相等操作符: 相等操作符有这几种(大致来说分为相等和全等):

    console.log(1 == '1')
    console.log(1 != '1')
    console.log(1 === '1')
    console.log(1 !== '1')           
    console.log(null == undefined)
    console.log(null === undefined)

在此大家可以停一下,思考一下上方代码的运行结果 . . . 分割处 . . . 结果如下

走进前端——JavaScript(2)_类型检测

现在疑问就来了:
为什么1 == '1'结果会是true呢,因为在JavaScript中的 '=='会自动进行类型转换,也就是说他们在比较时进行类型转换
最后发现1 == 1,所以结果为true。
再次注意:null == undefined为true!

下期内容

JavaScript上下文作用域和垃圾回收

**章末语**
前端容易入门,但是需要持续不断的学习,更新自己的知识
千里之行,始于足下
喜欢文章的话可以动动小手点个赞和关注呀~~
长期更新......

脚本宝典总结

以上是脚本宝典为你收集整理的走进前端——JavaScript(2)_类型检测全部内容,希望文章能够帮你解决走进前端——JavaScript(2)_类型检测所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: