最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

JavaScript对象参数的引用传递_javascript技巧

来源:动视网 责编:小采 时间:2020-11-27 21:48:45
文档

JavaScript对象参数的引用传递_javascript技巧

JavaScript对象参数的引用传递_javascript技巧:今天碰到一个问题,怎样把参数变更影响到函数外部,如: var myname = wood; A(myname); document.write(myname); function A(n) { n = Yao; } 输出结果还是wood,说明当myname传入A函数后,在函数体内,相当于有一个myname的副本
推荐度:
导读JavaScript对象参数的引用传递_javascript技巧:今天碰到一个问题,怎样把参数变更影响到函数外部,如: var myname = wood; A(myname); document.write(myname); function A(n) { n = Yao; } 输出结果还是wood,说明当myname传入A函数后,在函数体内,相当于有一个myname的副本


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

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

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

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

下面是关于对象的例子:

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

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

请看:

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

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

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

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

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

文档

JavaScript对象参数的引用传递_javascript技巧

JavaScript对象参数的引用传递_javascript技巧:今天碰到一个问题,怎样把参数变更影响到函数外部,如: var myname = wood; A(myname); document.write(myname); function A(n) { n = Yao; } 输出结果还是wood,说明当myname传入A函数后,在函数体内,相当于有一个myname的副本
推荐度:
标签: 对象 参数 调用
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top