js堆和栈的了解

    技术2022-07-10  124

            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]

     

    Processed: 0.009, SQL: 9