美文网首页
变量类型和转换

变量类型和转换

作者: talent_ray | 来源:发表于2020-03-24 14:17 被阅读0次

    变量类型

    • JS包含六种基本类型 boolean、number、string、symbol、undefined、null
    • 三种引用类型 对象、数组、函数

    通过typeof识别类型

    对以上九种类型的识别为
    boolean、number、string、symbol、undefined、object、object、function
    所以typeof只能运算符用于判断对象的类型,但是对于一些创建的对象,它们都会返回'object',有时我们需要判断该实例是否为某个对象的实例,那么这个时候需要用到instanceof运算符

    instanceof

    判断一个对象与构造函数是否在一个原型链上

    const Person = function(){}
    const p1 = new Person()
    p1 instanceof Person // true
    
    var str = 'hello word'
    str instanceof String // false
    var str2 = new String('hello word')
    str2 instanceof String // true
    

    instanceof 方法要求开发者明确地确认对象为某特定类型,所以也有它的局限性

    通过typeof + Object.prototype.toString判断

    如果是原始类型,他会将原始类型包装为引用类型,然后调用对应方法

     /**
       * 类型判断
       */
     function getType(val){
       // 先处理null
       if(val === null){
           return 'null'
       }
       // 判断是不是基础类型
       const typeOfT = typeof val
       if(typeOfT !== 'object'){
         return typeOfT
       }
       // 处理引用类型
       const tmp = {
         '[object object]' : 'object',
         '[object Array]' :  'array',
         // 包装类型
         '[object String]' : 'object - string',
         '[object Number]' : 'object - number',
         '[object Boolean]' : 'object - boolean'
       }
       const typeStr = Object.prototype.toString().call(val)
       return tmp[typeStr]
     }
    

    变量的转换

    变量在计算及运行过程中,会进行隐式的类型转换

    转boolean

    以下都为假值,其他所有值都转为true,包括所有对象(空对象,空数组)
    false、undefiend、null、' '、NaN、0、-0

    对象转基本类型

    对象在转基本类型时,会调用'valueOf',需要转成字符类型时调用'toString'

    var a = {
      valueOf() {
        return 0;
      },
      toString() {
        return '1';
      }
    }
    
    1 + a           // 1
    '1'.concat(a)   //"11"
    

    需要对类型转换更深入了解的可参考下面两篇文章

    JS类型转换规则总结
    JS隐射类型转换

    相关文章

      网友评论

          本文标题:变量类型和转换

          本文链接:https://www.haomeiwen.com/subject/nbmiyhtx.html