JavaScript3

1. 内存的分类:栈空间、堆空间

  1. 栈空间:保存基本数据类型的数据(1. 定义一个变量  2. 赋值:字符串,数字,布尔类型,undefined,Null  3. 将数据保存到栈空间 4.变量指针指向该栈空间)

  2. 堆空间:保存数组、对象等数据类型(1. 定义一个变量  2. 赋值:对象{name: 'xiaoming'}  3. 将数据保存到堆空间  4. 在栈空间也占用一块内存空间用来记录该堆空间的空间地址  5. 变量指针指向栈空间))

 

 

2. 基本数据和复杂数据作为参数时的区别

  结论:基本类型数据作为参数时,相当于复制了一份栈空间中该数据,且变量名是函数中的临时变量a,对于变量a的修改不会影响到原变量。  

     复杂类型的数据作为参数时,相当于复制了一份栈空间中指向堆空间的存储地址,该存储位置指向堆空间中同一份数据,因此修改变量obj也会影响到原变量myObj。
 
  
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 1. 将基本类型的数据传入函数中,
        function test(a){
            a++;
            console.log(a);     // 11
        };
        var num = 10;
        test(num);
        console.log(num);       // 10

        // 2. 复杂类型的数据作为参数.
        function test2(obj){
            obj.name = '小甜甜';
            console.log(obj.name);  // 小甜甜
        };
        var myObj = new Object();
        myObj.name = '牛夫人';
        test2(myObj);

        console.log(myObj.name);    // 小甜甜

    </script>
</body>
</html>

 

 

posted @ 2021-06-08 21:49  黑无常  阅读(48)  评论(0)    收藏  举报