JavaScript内存空间-原始类型与引用类型

28 阅读1分钟

image.png 遇到的问题 1.修改一个变量 另一个变量也随之改变 2.对比两个变量 明明是相同的 但比较的结果是false

基本概念

原始类型:Number String Boolean null undefined
引用类型:Object(Array Data Math ...)

原始类型与引用类型的区别

1.赋值

image.png 原始类型赋的是【值】 引用类型赋【的是引用地址】

image.png

2.比较 原始类型比较的是值是否相等,引用类型比较的是【引用】

//原始类型的比较
let str1="hello";
let str2="hello";
console.log(str1 === str2);//true

//引用类型的比较
let stu1={name:"xiaoming"};
let stu2={name:"xiaoming"};
// let stu2=stu1;比较才是true 只是两个不同的变量 但是指向同一个引用
console.log(stu1 === stu2);//false 比较的是引用地址,根本不是同一个人

3.函数传参

//原始类型传参
function fun(num){
  num=100;//函数内的操作不会影响到实参的值
}
let n=10;
fun(n);
//因为 num 和n这是两个值 互不影响
console.log(n);//10

//引用类型传参
function fun1(arr){
  arr.push(10);//函数内的操作会影响到函数外
}
let a=[1,2,3];
fun1(a);
//首先a是[1,2,3]然后之后又push进去一个10最终a=[1,2,3,10]
console.log(a);