14简单类型和复杂类型(栈和堆中地址的值传递理解)

  • 简单类型和复杂类型(栈和堆中地址的值传递理解)
栈和堆地址的理解.png
  • 简单类型和复杂类型(栈和堆中地址的值传递理解)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>14简单类型和复杂类型</title>
    <script>
        //原始数据类型:number,string,boolean,undefined,null,object
        //基本类型(简单类型),值类型:number,string,boolean
        //复杂类型(引用类型):object
        //空类型:undefined,null

        //值类型的值在那一块空间中存储?  栈中存储
        //引用类型的值在那一块空间中存储?  对象在堆上存储,地址在栈上存储


        // var num=10;//值类型,值在栈上
        // var obj={};//复杂类型,对象在堆,地址(引用)在栈


        //值类型之间传递,传递的是值
        //引用类型之间传递,传递的是地址(引用)

        //值类型作为函数的参数,传递的是值
        //引用类型作为函数的参数,传递的是地址


        // var num=10;
        // var num2=num;//传递的值


        // function f1(x){
        //     x=100;
        // }
        // var num=10;
        // f1(num);
        // console.log(num);//10



        var obj={
            name:"小明"
        };
        function f2(obj2){
            obj2.name="小红";
        }

        console.log(obj.name);//小明
        f2(obj);
        //因为obj和obj2的地址一样,但是f2的值是小红,因为(堆中)小红地址覆盖小明;所以时候小红
        console.log(obj.name);//小红


    </script>
</head>
<body>

</body>
</html>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容