• 在参数传递中,不分基本,引用数据类型。都是以值直接进行传递的。如下典型例子。


    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
    </head>
    <body>
        <script type="text/javascript">
            function setName(obj){
                obj.name="xm"; //这里的obj和下面obj={},点关系没有,因为 obj={},重新创建一个堆内存空间。这里的obj={},可以看做是anthorObj。这样就容易懂了。
                obj={}; //以后看到这个,就是重新再开辟一个新的堆内存空间,跟上面一点关系没有。说白了就是第二个对象。这里的obj是新的引用地址,新的堆内存空间。这里的obj可以看成anthorOjb。
                obj.name="xh";
            };
            var person={};
            setName(person);
            document.write(person.name);
        </script>
    </body>
    </html>

    ---------------

    输出结果为:xm,而不是xh

    解析:

    如上代码执行到setName(person)时,可以解析为如下:
    function setName(person){
                person.name="xm"; //
                person={};  //使用变量person重新再开辟一个堆内存空间,这里的person可以看成是anthorPerson,跟上面的person一点关系没有。所以在下面执行document.write时,只读取上一行的,person.name=“xm”,跟下面重新创建person={}对象一点关系没有。
                person.name="xh";
    };
    即:document.write(person.xh);

  • 相关阅读:
    32位和64位系统区别及int字节数
    c语言指针占几个字节
    可重入和不可重入
    C中的volatile用法
    让你分分钟读懂CPU架构及芯片厂商
    手机CPU知识扫盲:谈谈手机CPU架构与原理 (全
    IO端口、IO内存、IO空间、内存空间的含义和联系
    IO端口和IO内存的区别及分别使用的函数接口
    linux终端下 编译c语言程序
    git各种撤销操作
  • 原文地址:https://www.cnblogs.com/Knowledge-is-infinite/p/10606378.html
Copyright © 2020-2023  润新知