1. var a = 10;
  2. var b = a;
  3. console.log(b);//10
  4. b = 20;
  5. console.log(a);//20

Promise

  1. var p = new Promise((resovle,reject)=>{
  2. resovle(1);
  3. reject(2);
  4. })
  5. console.log(p instanceof Promise)
  6. console.log(p)

引用

基本类型只传值,引用类型既传值也传址
引用:既传值也传址
地址,引用,指针

  1. var obj ={name:"lisi"};
  2. var str = obj;//引用类型赋值计算的时候传递的是引用或者说指针
  3. console.log(str);
  4. str.age = 18;
  5. console.log(obj);

如果是声明一个引用数据类型,那么占了两块内存空间
变量存在栈中
生成的实际对象存堆内存中
栈内存中的变量存的是一个引用(指针,坡地的值),指向堆内存中的实际对象

发生了赋值运算 实际上将地址的值赋予了sum,那么这个指针也是指向堆内存中的同一个对象

  1. var arr = [1,2,3];
  2. var sum = arr;
  3. console.log(sum);//[1,2,3,4]
  4. arr.push(4);
  5. console.log(sum);//[1,2,3,4]

深拷贝,浅拷贝

数组里面每一项是基本数据类型的一个深拷贝

  1. var arr = [1,2,3];
  2. var sum = [...arr];
  3. console.log(sum);//[1,2,3]
  4. arr.push(4);
  5. console.log(sum);//[1,2,3]
  1. var arr = [1,2,3];
  2. var sum = [].concat(arr);
  3. console.log(sum);
  4. arr.push(4)
  5. console.log(sum);

slice

  1. var arr = [1,2,3];
  2. var sum = arr.slice(0);
  3. console.log(sum);
  4. arr.push(4);
  5. console.log(sum);

2.png无标题.png