美文网首页
js深刻理解--数据类型

js深刻理解--数据类型

作者: 朝西的生活 | 来源:发表于2019-04-09 21:41 被阅读0次

    数据类型

    js中的基本数据类型, 分别为 string, number, boolean, undefined, function, object, symbol 以及未来的 BigInt.

    值类型

    保存在 中, 每次复制与赋值操作的都是变量本身的值

    const a = 1;
    const b = 1;
    const c = true;
    const d = false;
    console.log(a === b); // true
    console.log(c === d); // true
    

    注意: 简单类型 !== 值类型

    const a = 1;
    const b = new Number(1);
    
    a === b; // ? false
    a.length = 2;
    b.length = 2;
    a.length // ? undefined
    b.length // ? 2
    
    // 大坑
    const c = new String('');
    c.length // ? 0
    c.length = 2;
    c.length // ? 0
    

    引用类型

    保存在堆中, 在赋值等操作实际操作的是对象的内存地址.

    1. function外, 通过 typeof 不能判断其准确类型
    2. 在操作引用类型是一定注意深拷贝和浅拷贝
    3. 使用 instanceofObject.prototype.toString.call 来判断其精确类型
    const a = {};
    const b = {};
    a === b; // false
    
    const a = {test: 1};
    const b = a;
    b.test = 2;
    a.test // 2
    
    // 分析
    // eg1
    a = {n: 1};
    a.x = a = {n: 2}
    a.x  // ?
    
    // eg2
    
    a = {n: 1};
    b = a;
    a.x = a = {n: 2}
    a.x // ?
    b.x // ?
    

    相关文章

      网友评论

          本文标题:js深刻理解--数据类型

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