美文网首页
JS基本类型和引用类型

JS基本类型和引用类型

作者: dosher_多舍 | 来源:发表于2019-02-26 20:48 被阅读0次

    一个变量可以存放两种类型的值,基本类型的值(primitive values)和引用类型的值(reference values)。

    JS拥有七种数据类型,其中:

    基本类型(值类型)NumberStringBooleanSymbolUndefinedNull

    基本数据类型的值是按值访问的,变量是存放在栈内存(Stack)里。

    var a = 1
    var b = a
    a = 10
    console.log(b) // b = 1
    

    引用类型Object

    Array、Function、RegExp属于Object

    引用类型的值是按引用访问的,栈内存保存变量标识符和指向堆内存中该对象的指针,堆内存保存了对象的内容。

    var a = { age: 1 }
    var b = a
    b.age = 2
    console.log(a) // { age: 2 }
    

    类型的检测

    • typeof:经常用来检测一个变量是不是最基本的数据类型。
    // 基本
    typeof 123           // number
    typeof '123'         // string
    typeof true          // boolean
    typeof Symbol()      // symbol
    typeof undefined     // undefined
    // 历史遗留bug,空指针对象
    typeof null          // object    
    // 引用
    typeof /123/ig       // object
    typeof {}            // object
    typeof []            // object
    typeof function(){}  // function  函数是特殊的引用类型,所以能区分
    
    • instanceof:用来判断某个构造函数的 prototype 属性所指向的对象是否存在于另外一个要检测对象的原型链上。
    ({}) instanceof Object              // true
    ([]) instanceof Array               // true
    (/aa/g) instanceof RegExp           // true
    (function(){}) instanceof Function  // true
    

    变量计算-强制类型转换

    • 字符串拼接
    var a = 10           // number
    var b = '10'         // string
    var c = a + b        // '1010' string
    
    • ==运算符
    100 == '100'         // true
    0 == ''              // true
    null == undefined    // true
    
    • if语句
    var a = 100
    if(a) {}             // a = 100 => true
    
    var b = ''
    if(b) {}             // b = '' => false
    
    • 逻辑运算
    (10 && 0)            // 0
    ('' || '123')        // '123'
    (!100)               // false
    (!0)                 // true
    
    // 运用两个 !! 把一个值当做true或false
    var a = 100
    (!!a)                // true
    

    拓展: 什么时候用 == 和 ===

    当if(obj.a == null){}判断时候,此时等于if(obj.a === null || obj.a === undefined){}

    相关文章

      网友评论

          本文标题:JS基本类型和引用类型

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