javascript中的全部函数的參数传递都是依照值传递的,做了以下測试:

function addTen(num){num +=10;return num;
}var count = 20;
var result = addTen(count);
alert(cont);        //20
alert(result);  //30

好吧。上面仅仅是做了基本类型的传递,再做个引用类型的传递看看:

function setName(obj){obj.name="Mark";
}var person = new Object();
setName(person);
alert(person.name);     //Mark

这样看起来是引用传递,不是值传递,那么再做个測试:

function setName(obj){obj.name="Mark";obj = new Object();obj.name = "David";
}var person = new Object();
setName(person);
alert(person.name);     //Mark

这个样例与前面一个样例的唯一的差别就是在setName()的函数后面添加 了两行代码:一行代码为obj又一次定义了个对象。还有一行代码为该对象定义了一个带有不同值的name属性。在把persion传递给setName()函数后,其name属性被设置为Mark,然后将一个新对象赋值给obj,同一时候其name属性设置为David。假设person是依照引用传递的,那么person就会自己主动被改动为指向其name属性值为David的新对象。可是,当接下再訪问person.name时。显示的值仍是Mark。这说明即使在函数内部改动了參数的值。但原始的引用仍然保持未变。实际上。当在函数内部重写obj时,这个变量引用的就是一个局部对象了。而这个局部对象会在函数运行完后被销毁。

转载于:https://www.cnblogs.com/ldxsuanfa/p/9944851.html

再次学习javascript中的參数传递相关推荐

  1. java參数传递机制浅析

    欢迎转载,转载请声明出处! ----------------------------------------- 前言: java语言中,參数的传递仅仅有一种机制.那就是值传递. 举例: 以下将通过几个 ...

  2. C语言中函数和指针的參数传递

    C语言中函数和指针的參数传递 近期写二叉树的数据结构实验.想用一个没有返回值的函数来创建一个树,发现这个树就是建立不起来,那么我就用这个样例讨论一下c语言中指针作为形參的函数中传递中隐藏的东西. 大家 ...

  3. C# 多线程參数传递

    1.通过实体类来传递(能够传递多个參数与获取返回值),demo例如以下: 须要在线程中调用的函数: namespace ThreadParameterDemo {public class Functi ...

  4. 如何理解并学习javascript中的面向对象(OOP)

    本文不适合javascript初学者看(javascript水平还停留在函数级别的朋友,看了会觉得很晕的).如果你想让你的javascript代码变得更加优美,性能更加卓越.或者,你想像jQuery的 ...

  5. java scri p t_深入浅析JavaScript中数据共享和数据传递_javascri

    数据共享和数据传递是相辅相成的,我们一起来讨论这个问题.首先要说的是共享和传递都是有作用域的.作用域就是起作用的区域,在同一个作用域数据可以共享,超过这个作用域就是跨作用域,就得用到数据传递了. 作用 ...

  6. JavaScript基础知识总结 14:学习JavaScript中的File API、Streams API、Web Cryptography API

    目录 一.Atomics和SharedArrayBuffer 二.原子操作基础 1.算术及位操作方法 2.原子读和写 3.原子交换 4.原子Futex操作与加锁 三.跨上下文消息 四.Encoding ...

  7. Lua学习教程之 可变參数数据打包与解包

    利用table的pack与unpack进行数据打包与解包.測试代码例如以下: print("Test table.pack()----------------");function ...

  8. 带你学习Javascript中的函数进阶(一)

    文章目录 1. 函数的定义和调用 1.1 函数的定义方式 1.2 函数的调用方式 2. this 2.1 函数内this的指向 2.2 改变函数内部this指向 2.3 call apply bind ...

  9. brain.js 时间序列_免费的Brain JS课程学习JavaScript中的神经网络

    brain.js 时间序列 The last few years, machine learning has gone from a promising technology to something ...

最新文章

  1. [VC6] 图像文件格式数据查看器
  2. JavaScript武力值飙升!用TensorFlow.js轻松实现在浏览器里搞深度学习......
  3. 剑指offer:翻转单词顺序列
  4. 获取/设置IFRAME内对象元素的几种JS方法
  5. Xcode命令行生成Bitcode静态库
  6. 基于qtc++设计文本编辑器的代码_文本编辑器Vim/Neovim被曝任意代码执行漏洞,Notepad:兄弟等你好久了...
  7. 谁需要这件礼物?每一个爱学习的人!
  8. Unity在NGUI中默认动态字体Arial字体显示不完整解决方案
  9. C# 软件开发岗面试经验总结
  10. 2022.7.11-7.17 AI行业周刊(第106期):竭尽全力,努力就好
  11. 硬件驱动为什么要有WHQL数字签名
  12. python表示倍数的英语句型_英语倍数表达法
  13. mybatis基础入门
  14. Python小例子,太走心~
  15. 小白学习爬虫的第三天之数据解析bs4与pyQuery的使用
  16. android 乐固渠道打包,安卓腾讯乐固(legutools)多渠道打包(友盟)
  17. logrotate失效的简单排查
  18. u盘格式化后数据能恢复吗?
  19. P1719 最大加权矩形【前缀和】
  20. 自主学习平台亮点(培训用)

热门文章

  1. Factories Gym - 102222G(2018宁夏邀请赛暨2019银川icpc网络预选赛)
  2. Weird Game CodeForces - 299C
  3. spd耗材管理流程图_国药器械山东公司助力济宁医学院附属医院SPD项目成功启动...
  4. 汇编语言0AH功能调用中显示字符出错
  5. python while一定要提供循环次数吗_Python语法之选择和循环(if、while)
  6. Hadoop在MapReduce中使用压缩详解
  7. C/C++语言中字符串多行书写方法
  8. 嵌入式系统分类及其应用场景_词嵌入及其应用简介
  9. 将ARM4412开发板配置成USB网卡,并且使用USB通过Ubuntu上网
  10. 欢迎使用CSDN-markdown编辑器啦啦啦啦啦