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

    <!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);

  • 相关阅读:
    ansible 批量在远程主机上执行命令
    SQLAlchemy
    operator, itertools
    mongodb基础语法
    django model Meta选项
    __getattr__,settr
    django的contenttype表
    time和datetime和tzinfo
    全局钩子的改名
    dom中文字居中
  • 原文地址:https://www.cnblogs.com/Knowledge-is-infinite/p/10606378.html
Copyright © 2011-2022 走看看