1. 数据类型 - 6 中
基本类型 - 5 种 number string boolean undefined null
引用类型 - 1 种 object
2.内存:堆内存和栈内存
栈内存:基本类型的值和引用类型的地址。
堆内存:存放引用类型的值。
引用类型:地址(栈内存) + 值(堆内存)
var arr1 = [];//开辟新的地址
var arr2 = [];//开辟新的地址
console.log([] == []); //false 比较的地址。
3.值传递和址传递(引用传递)
值传递:基本类型遵循的。
var a = 5;
var b = a;//值传递,将a的值5传递给b
b++;
console.log(a); //5
console.log(b); //6
引用传递(址传递):引用类型(对象)。
var arr1 = [1, 2, 3];
var arr2 = arr1;//址传递,arr1将地址给了arr2. 如果改变了arr2,arr2和arr1指向同一地址,同时改变了arr1的值。
arr2.push(4);
console.log(arr1); //[1, 2, 3, 4]
console.log(arr2); //[1, 2, 3, 4]
问题:引用类型不能直接通过=进行赋值,赋值会造成一个对象改变其他的跟着改变。
解决问题:最终想要的获取对象里面值。
var arr1 = [1, 2, 3]; //arr1地址
var arr2 = []; //arr2地址
for (var i in arr1) { //一一对应赋值。
arr2[i] = arr1[i];
}
arr2.push(4);
console.log(arr1); //[1, 2, 3]
console.log(arr2); //[1, 2, 3, 4]