JS数据类型管理

  因为JS是一种弱类型语言,在声明变量时不必声明变量类型;变量的类型由运行中存储的数据类型决定,因此变量的类型是随机变化的,为此为保证代码运行的严谨性和代码运行时因隐式转换而导致变量类型的变化所致出现异常情况,我们经常需要对变量类型进行验证处理。因此我们在写代码时要对自己定义的变量类型进行有效的管理,这样能避免很多意外bug和提高debug的效率。

  

一、JS数据类型

JS总共有7种数据类型,如下所示:

  1、 6种原始数据类型

  1)String

  2)  Number

  3)  Boolean

  4)  Null 

  5)  Undefine

  6) Symbol (es6)

  2、复合数据类型

  1)  Object

二、JS数据类型判断

  1、typeof

     typeof操作符能辨别基本的数据类型,并且返回值为表示该数据类型的字符串 ; 但是其能力有限,只能用于来区别原始数据类型,对于其Object类型中的Array、Date 、RegExp 及其 Null 类型无法细分出

              

    注意:typeof(null) = ' object '  

    null类型判断方法:

    variable === null     //  true 为 null

    variable == null      //   true 为 null 或者 undefined

  2、 instanceof

    用法:object instanceof constructor

    instanceof 运算符用来检测一个构造函数的prototype属性是否存在一个对象的原型链上,即检测该对象是否是一个构造函数的实例化

    (1)可以通过Object.getPrototypeof(object)方法来查看该对象的原型,即该对象内部属性[[Prototype]]的值

       如果 Object.getPrototypeof(object) === constructor.prototype 

       则该所检测对象一定是所测试的构造函数的实例化

    var arr = [] ,
        reg = /\bis\b/g ,
        str1 = new String(),
        str2 = 'aaa';

    arr instanceof Array      // true
    arr instanceof Object     // true
    arr instanceof RegExp     // false

    reg instanceof RegExp     // true
    str1 instanceof String     // true
    str2 instanceof String    // false

    因此我们可以通过 instanceof 运算符对object类型的数据进一步判断来区分 Array、Date 、RegExp 及其 Null 类型

  3、constructor属性

   实例化的对象都有constructor属性,其constructor属性指针指向的是构造函数,可用来判断未知对象的类型

   所以上面的判断方法也可以写成下面的判断方式

    arr.constructor === Array      // true
    arr.constructor === Object     // true
    arr.constructor === RegExp     // false

    reg.constructor === RegExp     // true
    str.constructor === String     // true

 4Object.prototype.toString.call() 

a = 'hello'
b = []
c = function(){}

Object.toString.call(a) === "[object String]" 
Object.toString.call(b) === "[object Array]" 
Object.toString.call(c) === "[object Function]" 

  

转载于:https://www.cnblogs.com/worldly1013/p/6519402.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值