博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaScript——之对象参数的引用传递
阅读量:7082 次
发布时间:2019-06-28

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

今天碰到一个问题,怎样把参数变更影响到函数外部,如:

输出结果还是wood,说明当myname传入A函数后,在函数体内,相当于有一个myname的副本,这个副本的值等于myname,之后在函数体内对其做的操作是在这个副本上进行的。

 

但情况有所不同,当传入的参数是数组对象时,在函数体内对参数所做的更改会反映到原变量上。

 

可以看出,上面代码中已经把friut数组的第一个元素更改了。

下面是关于对象的例子:

可以很明显地看到函数体内对参数的改动影响到了原来的变量,这与通常情况下的传参有质的区别了。需要特别注意。

But,当在函数体内对传入的数组或对象赋值时,这个更改不会反映到函数体外的原变量身上!

请看:

按照上面函数内部的更改会反映到原变量的理论,你肯定觉得执行完A()后myname变量的name1属性的值已经变成'Yao'了吧。但结果让人有点难以接受。

原因在于,当在函数体内使用赋值操作时,系统就创建了一个变量名为p的变量。这个p是函数内部的变量,对它进行赋值当然只在函数体内起作用,外面的myname还是原来的myname。

这一步与原来代码的操作差别仅在于在函数体内是对参数赋新值呢还是对参数的属性或数组的元素进行更改。

 


 

 

下面我们用传递对象的方式,重新实现一个时钟数字格式化输出的例子:

例子使用setInterval()函数定时调用刷新事件,也可以用setTimeout()在getTime()中递归调用来实现。

转载于:https://www.cnblogs.com/woodk/p/5128302.html

你可能感兴趣的文章
面试题:滴滴一道原型调用方面的题
查看>>
【浅度渣文】JVM——简述垃圾回收
查看>>
vs code实用快捷键
查看>>
项目管理不要学诸葛亮,睁一只眼闭一只眼才对
查看>>
代码保护软件 VMProtect 用户手册: 保护应用程序的三大要素
查看>>
Fish Redux 全局Store-AppRoute使用指南
查看>>
markdown的基本使用
查看>>
2017年秋招阿里腾讯百度面经
查看>>
一天一个知识点 - 浅谈 JavaScript new 究竟做了什么?
查看>>
Math对象(常用的)
查看>>
requestAnimationFrame实现canvas动画
查看>>
通俗易懂了解反向代理是什么
查看>>
CSS学习--高度和宽度
查看>>
以太坊连载(一):以太坊是什么
查看>>
PS 简单抠图流程
查看>>
魔法书《SICP》的简明介绍 - 为什么要学习SICP
查看>>
Java笔记
查看>>
AQS原理学习笔记
查看>>
liunx 几个简单的操作命令
查看>>
iOS导航栏
查看>>