JavaScript的数据类型和数据类型的检测

数据类型

JavaScript的基础数据类型有,NaN    string   undefined    Null      Boolen    Symbol  Bigint   这些都是基础数据类型,还有一个引用数据类型,object。

而object又分为 ,array(数组),regexp(正则表达式) ,date(日期), math(数学函数), function(函数)

基础数据类型会存在栈内存中,这种储存在复制的时候会创建一个完全一样的变量

引用数据类型会存在堆内存中。

数据类型的检测

数据类型的检测主要分为三类

1.typeof

typeof方法可以检测基础数据类型,用法如 

var a=1

conselo.log(typeof a)//number

或者typeof(a)

注意

在使用typeof的时候是无法判断引用数据类型的,如果知识用于判断基础数据类型的话建议写一个if判断

判断是否为基础数据类型,如果不是就进行下一步验证

2.instanceof

通过instaneof能判断这个函数是否为之前那个构造函数生成的对象,用法如: 

  1. let car = function () { }

  2. let bwm = new car()

  3. console.log(bwm instanceof car);//true

  4. let Car = new String('x7')

  5. console.log(Car instanceof String);//true

  6. let str = "ccc"

  7. console.log(str instanceof String);//false

如何自己写一个验证方法?

  1. function myInstanceof(left, right) {

  2. // 这里先用typeof来判断基础数据类型,如果是,直接返回false

  3. if(typeof left !== 'object' || left === null) return false;

  4. // getProtypeOf是Object对象自带的API,能够拿到参数的原型对象

  5. let proto = Object.getPrototypeOf(left);

  6. while(true) { //循环往下寻找,直到找到相同的原型对象

  7. if(proto === null) return false;

  8. if(proto === right.prototype) return true;//找到相同原型对象,返回true

  9. proto = Object.getPrototypeof(proto);

  10. }

  11. }

  12. // 验证一下自己实现的myInstanceof是否OK

  13. console.log(myInstanceof(new Number(123), Number)); // true

  14. console.log(myInstanceof(123, Number)); // false

instanceof可以准确的判断数据的引用类型,但是无法判断基础数据类型

注意:为了代码的严谨性,不建议单独用typeof或者instanceof,建议两者混合编写

总结:

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

 

          视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

  • 13
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值