1.引用类型和值类型区别
1.值类型:基本数据类型{数字型、字符串型、布尔型、undefined、null}
变量只能操作栈空间,栈中存储数据,赋值的时候"拷贝栈数据",修改数据对原数据没有影响
// 值类型
let num = 10
let num1 = num
num1 = 20
console.log(num,num1) // 10,20
2.引用类型:复杂数据类型{数组、函数、对象} . [] () 才能改变堆
栈中存储地址,赋值时"拷贝栈数据"修改数据对原数据有影响
细节: 只有修改堆的数据,才会对原数据产生影响。 修改栈是不会的。
// 引用类型
let arr = [10,20,30]
let arr1 = arr
arr1[0] = 100 // 改堆:通过arr来修改堆中0下标数据
console.log(arr,arr1) //[100,20,30]
arr1 = 10
console.log(arr,arr1) //[100,20,30], 10
/* 如何区分引用类型,到底是改栈还是堆呢。 就看他是操作变量自己,还是操作变量元素/属性
修改栈(不会对别人产生影响): 变量名 = 值
修改堆(会对别人产生影响): 数组名[下标] = 值 对