我们都知道变量的本质是空间地址,是程序在内存中申请的一块用来存放数据的小空间。
1、基本类型的数据
基本类型(值类型)的数据是存储在栈空间的,在栈空间中存储值的本身。JS中当一个变量给另外一个变量赋值都是副本赋值,相当于将一个存储在栈空间储存的内容复制一份给另外一个变量赋值。
let age=20
//调用前:他是一个占位
//调用后:它是一个局部变量
function chanGe(value){
value=30
}
//调用方法就是实参给形参赋值的过程
chanGe(age)
//上面调用函数时不会改变age本身
console.log(age) //20
2、引用类型的数据
和基本类型不一样,引用类型数据会开辟两块空间,在栈空间存储的是堆空间的地址,而真正存储引用类型的数据的是存放在堆空间里面。
因为引用类型里面的数据会有很多的键值对、属性和值,相对比较复杂一些,所以需要一个专门的空间来存储数据。既然储存在一个空间想要获取到它,就需要有一个地址,而这个地址就放在栈空间里面,当我们需要调用时通过复制栈空间里面存放的地址来找到堆空间里面对应的数据。既两个变量,同一地址
//引用类型
let obj = {
name:'jack',
age: 20
}
//在调用时是一个变量
function chanGe (temp){
temp.age=30
}
//调用方法传递参数,是实参为形参赋值的过程
chanGe(obj)
console.log(obj.age);