在Js中引用类型与值类型的区别

JavaScript中有引用类型和值类型,这两种类型都被广泛的应用,那么这两个类型的区别在哪里呢?往下面看

值类型:当a的值赋值给b之后,如果两者的值再次改变,a和b的值互不影响

  • 值类型的值通常都是存储在栈中
    如代码所示:
    let a = 100;
    let b = a;
    b = 200;
    console.log(a)  //100
    //a是值类型, b引用了a   当b修改时不会影响a

如图所示a的值为100,然后a的值又赋值给了b,所以现在两者的值同时为100。紧接着b的值修改为了200,因为是a的值赋值给了b,所以b改变的仅仅是他自身的值,并不会影响到a
值类型图解

引用类型:当a的值赋值给b之后,两者之间任意一个值发生改变,都会影响到双方

  • 引用类型的值通常是存储在堆中,栈中存储的只是一串代码,那串代码指向存储在堆中的值
    如代码所示:
    let a = {age:18};
    let b = a;
    b.age = 20;
    console.log(a.age) //20
    //a:引用类型, b和a引用的是同一个对象,其中一个改变,另一个也会改变

如图所示a是一个对象,对象的属性age的值是18,然后a的值赋值给了b。这时a和b指向了同一个对象,所以当b修改了age的值为20之后,再次打印a.age就输入了20,此时堆中age的值已经发生改变
引用类型图解
常见的值类型: 数字Number 、字符串 String 、布尔值Boolean、未定义undefined 、符号Symbol
常见的引用类型: 对象Object 、数组Array、函数function、null(空地址)

猜你喜欢

转载自blog.csdn.net/weixin_48179599/article/details/106459561