码迷,mamicode.com
首页 > Web开发 > 详细

有关EMCSScript内部参数与参数列表的同步

时间:2015-07-19 11:42:53      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:

此文章在阅读了Professional JavaScript for Web Developers 3rd Edition 之有关理解参数的部分后,对此问题的思考。

  作者在书中提到,作为函数参数的命名参数(assignment)传入函数内部,实质上是将值传入了函数内部的arguments数组中,按传入的顺序来定义命名参数在数组中的index。

  而命名参数的值与arguments数组对应部分的值是同步的,也就是说,当命名参数的值改变,arguments数组对应部分的值也相应地改变了。此外,作者还强调,这两部分在内存中的空间是相独立的,因此只会相互同步,而在内在空间上不影响。

  经过以下代码的测试可以得出以上结论是正确的:(测试环境:chrome 43.0.2357.134 m/windows 7 Ultimate)

1 function sumto(num){
2                 alert(arguments[0]+"/"+num);
3                 num=12;
4                 alert(arguments[0]+"/"+num);
5                 arguments[0]=15;
6                 alert(arguments[0]+"/"+num);
7             }
8 sumto();//返回三组值:undefined/undefined;undefined/12;15/12
9 sumto(10);//返回三组值:10/10;12/12;15/15

  以上代码同时也说明了两个问题:

  1、当定义了命名参数,而不向函数中传入参数,则arguments与命名参数如定义未赋值之变量一样,返回undefined。

  2、在函数当中修改的不论是命名参数的值还是arguments对应部分的值,两方的值都将改变。

  此处,结论2是作者在书中所否定的,作者写道:但这种影响是单向的,修改命名参数不会改变arguments中对应的值。当然,作者整本书对应EMCAScript而言,笔者并未完整地看过EMCAScript-262,暂时无法评判结论的正确与否,仅从测试结果来看,这种影响并非单向的。

有关EMCSScript内部参数与参数列表的同步

标签:

原文地址:http://www.cnblogs.com/orange-ven/p/4658353.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!