博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在参数传递中,不分基本,引用数据类型。都是以值直接进行传递的。如下典型例子。...
阅读量:6002 次
发布时间:2019-06-20

本文共 839 字,大约阅读时间需要 2 分钟。

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

 

转载于:https://www.cnblogs.com/Knowledge-is-infinite/p/10606378.html

你可能感兴趣的文章
仰视源代码,实现memcpy
查看>>
HTTP gzip和deflate的几点区别
查看>>
{Repeater控件} Repeater控件的用法流程及实例
查看>>
AD账号解锁
查看>>
English - in the light of(按照,根据)与according to的区别是什么
查看>>
浅析linux内核中的idr机制
查看>>
【转】.so兼容32位和64位
查看>>
PowerDesigner跟表的字段加注释
查看>>
w !sudo tee %
查看>>
javascript面试题:如何把一句英文每个单词首字母大写?
查看>>
URAL 1962 In Chinese Restaurant 数学
查看>>
计算 TPS,QPS 的方式
查看>>
洛谷⑨月月赛Round2 P3393逃离僵尸岛[最短路]
查看>>
群晖NAS使用Docker安装迅雷离线下载出现the active key is not valid.
查看>>
spring boot 2使用Mybatis多表关联查询
查看>>
Making HTTP requests via telnet - Tony's Place
查看>>
千元机市场再添“新宠”,红米Note7和vivo Z3谁才是千元王者
查看>>
荣耀10GT升级EMUI 9.0体验分享:这可能是最好用的手机操作系统
查看>>
ZStack基于华芯通打造ARM国产云平台 助力云上贵州多项应用
查看>>
200本“保护日记”记录黄山迎客松生长变化
查看>>