js高程 page88在向参数传递基本类型的值时,被传递的值会被复制给一个局部变量(即命名参数,或者用ECMAScript 的概念来说,就是arguments

对象中的一个元素)。在向参数传递引用类型的值时,会把这个值在内存中的地址复制给一个局部变量,因此这个局部变量的变化会反映在函数的外部。

function setName(obj) {

obj.name = "Nicholas";

}

var person = new Object();

setName(person);

alert(person.name); //"Nicholas"

以上代码中创建一个对象,并将其保存在了变量person 中。然后,这个变量被传递到setName()函数中之后就被复制给了obj。在这个函数内部,obj 和person 引用的是同一个对象。换句话说,即使这个变量是按值传递的,obj 也会按引用来访问同一个对象。于是,当在函数内部为obj 添加name

属性后,函数外部的person 也将有所反映;因为person 指向的对象在堆内存中只有一个,而且是全局对象。有很多开发人员错误地认为:在局部作用域中修改的对象会在全局作用域中反映出来,就说明参数是按引用传递的。为了证明对象是按值传递的,我们再看一看下面这个经过修改的例子:

function setName(obj) {

obj.name = "Nicholas";

obj = new Object();

obj.name = "Greg";

}

var person = new Object();

setName(person);

alert(person.name); //"Nicholas"

这个例子与前一个例子的唯一区别,就是在setName()函数中添加了两行代码:一行代码为obj重新定义了一个对象,另一行代码为该对象定义了一个带有不同值的name 属性。在把person 传递给setName()后,其name 属性被设置为"Nicholas"。然后,又将一个新对象赋给变量obj,同时将其name属性设置为"Greg"。如果person 是按引用传递的,那么person 就会自动被修改为指向其name 属性值为"Greg"的新对象。但是,当接下来再访问person.name 时,显示的值仍然是"Nicholas"。这说明即使在函数内部修改了参数的值,但原始的引用仍然保持未变。实际上,当在函数内部重写obj 时,这个变量引用的就是一个局部对象了。而这个局部对象会在函数执行完毕后立即被销毁。

js函数调用html对象参数传递参数吗,js里函数参数传递对象传的是指针吗相关推荐

  1. php中数组的指针函数参数传递参数,循环语句、函数的参数及作用域、数组键值及指针操作函数(8月23日作业)...

    实例演示while(),do~while() 实例 /** * while循环 */ $num = 1; $sum = 0; while ($num <= 100) { $sum +=$num; ...

  2. js跳转传递php参数,将JS / Jquery中的参数传递到另一页上的PHP

    $.ajax({ type: 'POST', url: 'otherpage.php', data: $('form').serialize(), //you may want to give id ...

  3. js/jquery 获取url传递参数,js获取url?号后面的参数(一个或多个)

    第一种方法: (获取一个) detail.html?order_id=10 <Script language="javascript"> function GetReq ...

  4. java中参数存储_Java中函数参数传递和数据存储

    值传递是将要传递的值作为一副本传递的.. 引用传递,传递的是引用对象的内存地址.. 例如: int i=4; int j=i;   //相当于把4复制了一个副本赋给了j 输出结果是i=4 ,j=4 C ...

  5. 汇编和c语言函数的参数传递,c文件汇编后函数参数传递的不同之处

    mac下clang编译后函数的参数先保存在寄存器中(以一定的规则保存),然后在函数中压入栈里, 以待后用.例如上篇例子,红色部分: .global _decToBin _decToBin: pushq ...

  6. JavaScript对象详解,js对象属性的添加

    目录 一,什么是对象? 二,创建一个对象 三,对象的嵌套 四,对象的属性与修改 1,使用点.运算符 2,使用[]符号 3,修改属性 五,给对象添加属性 六,查看与删除对象的属性 1,使用Object. ...

  7. Python 把函数视作对象

    一等函数 在 Python 中,函数是一等对象.一等对象需要具备以下几个条件: 1.在运行时创建 2.能赋值给变量或者数据结构中的元素 3.能作为参数传递给函数 4.能作为函数的返回值 在 Pytho ...

  8. c++之指针和引用作为函数参数传递时的区别

    之前写过c++之值传递.引用传递.指针传递,今天再单独区分一下指针和引用作为函数参数传递时的区别. 本文参考浅谈C++中指针和引用的区别 一.指针作为函数参数传递时 1.类似于值传递,传入函数的指针只 ...

  9. js获取对象数组中指定属性值对象_3分钟学会操作JavaScript内置对象,快来试试吧...

    1 - 内置对象 1.1 内置对象 JavaScript 中的对象分为3种:自定义对象 .内置对象. 浏览器对象. 前面两种对象是JS 基础 内容,属于 ECMAScript: 第三个浏览器对象属于 ...

最新文章

  1. Linux Kernel 5.0或在达成600万Git Objects时到来
  2. html二级下拉导航,html -----二级下拉导航的实现(常用)
  3. hadoop 023.0与hadoop 1.0 io.serializable分析
  4. Cannot input a tensor of dimension other than 0 as a scalar argument
  5. 汉诺塔的改编题(用栈求解,分别递归和非递归)
  6. php 我已阅读并同意 判断,phb.php
  7. 修改element-ui源码解决穿梭框选择后显示顺序问题
  8. Streams全库复制
  9. 微信小程序+微信公众号开发总结
  10. 嵌入式Linux下Qt的中文显示
  11. 图像的一维熵和二维熵
  12. 什么时候使用Task.Delay,什么时候使用Thread.Sleep?
  13. php读取西门子plc_第三方设备如何读取PLC数据
  14. geatpy - 遗传和进化算法相关算子的库函数(python)
  15. 《防患未然:实施情报先导的信息安全方法与实践》——2.3 情报循环
  16. 基于手机通信录应用的前景+
  17. 中国人口空间分布数据集1990-2021年
  18. 有趣python小程序系列之一
  19. 2012蓝桥杯C++本科 取球游戏
  20. Netty快速学习1-基础知识回顾

热门文章

  1. mysql的主从复制原理
  2. [原创]敏捷管理实践看板思维导图
  3. SQL Developer更改日期显示格式
  4. 如何解决:Android中 Error generating final archive: Debug Certificate expired on 的错误
  5. Windows 7 SP1确实将有性能改进
  6. C#語法學習線程(Thread)
  7. 稀疏数据分析:马蹄估计量及其理论性质
  8. Wireshark 跟踪TCP流
  9. VS 工具-选项对话框 调试选项相关学习总结
  10. 一些可运行的C语言数据结构代码