• js基本类型和引用类型


    简单概述

    js变量可以划分为两种不同的数据类型:

    • 基本类型:undefined、null、Boolean、Number、String、Symbol(ES6)

    • 引用类型:除基本类型以外,也可以理解为对象,如:Object、Array、RegExp、Date、Function等

    类型的区别在于:

    基本类型引用类型
    可变性不可变可变
    存储区栈区栈区和堆区
    访问按值访问按引用访问
    两者比较值的比较引用的比较

    详细说明

    1. 值的可变性

    基本类型(以string类型为例):

    let person = '小明';
    person.age = 18;
    console.log(person.age);  // undefined
    
    • 1
    • 2
    • 3

    引用类型值(原始值)可添加属性和方法:

    let person = { name: '小落子' };
    person.age = 18;
    person.addAge = function() {
        person.age2 = person.age + 1;
    }
    person.addAge();
    console.log(person.age, person.age2);  // 18 19
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    这样就说明了,基本类型的值是不可变的,而引用类型的值是可变的

    1. 存储
    • 基本类型存储结构:
    栈区栈区
    name小红
    age18

    基本类型的变量存放在栈区(栈区指内存里的栈内存,stack)

    栈区保存了变量的标识和变量的值

    • 引用类型存储结构:

    在这里插入图片描述

    引用类型的存储需要内存的栈区和堆区共同完成(堆区指内存里的堆内存,heap)

    栈区保存了变量的标识符和指向堆内存中该对象的指针(该对象在堆内存的地址),堆区保存了实际的对象

    1. 访问/比较
    // 基本类型,以string为例
    let a = '[]', b = '[]';
    console.log(a === b);  // true
    
    // 引用类型
    let c = [], d = [];
    console.log(c === d);  // false
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    基本类型的访问是按访问的;引用类型是按**引用(地址)**访问的

    基本类型比较的是值,所以相同,就为 true;引用类型比较是两个对象堆内存地址是否相同,虽然变量c和变量d都是一个空数组,但是它们的堆内存地址不是一样的,地址指向的不是同一个数组对象,所以不相等。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M4tfOOuS-1659586862398)(C:\Users\zy3\AppData\Roaming\Typora\typora-user-images\image-20220804091356972.png)]

    经常遇到的问题

    关于基本类型和引用类型,不管是面试中,还是平常使用中,经常遇到的问题便是克隆(复制),这里又引出另一个概念(深克隆和浅克隆,对于基本类型是没什么影响的)

    • 浅克隆:复制引用类型时,不仅复制,而且还把内存地址也复制了一遍;修改其中一个,另一个会跟着变化

    • 深克隆:复制,内存地址不同;修改其中一个,另一个不会相应的改变

  • 相关阅读:
    element-radio回显问题
    基于YOLO算法与intel深度相机三维测量(工件尺寸和物体尺寸)
    微信管理系统:让企业更轻松地管理客户和员工资源
    Python绘制三维立体图详解
    序章 调度系统架构设计总述
    JMeter笔记16 | 性能参数配置及测试监听
    最新 MySQL 面试笔记解析直接爆砍 39K 月薪,拿走不谢
    presto搭建,并配置hive
    一个诡异的 Pulsar InterruptedException 异常
    Datawhale 202208 GitModel | 线性规划 下
  • 原文地址:https://blog.csdn.net/weixin_45663702/article/details/126157239