arguments和命名参数

ldw466 2014-03-04 09:19:52
在 "JavaScript高级程序设计(第3版)"中(第3章66页),说"arguments和命名参数的内存空间是独立的,但它们的值会同步。同步是单向的,修改命名参数不会改变arguments的值。"
但下面的测试却是双向影响的,不知哪里的问题?

function add(num1, num2){
arguments[1] = 10; //修改arguments会修改命名参数
alert(arguments[1]); // 10
alert(num2); // 10

num2 = 30; //修改命名参数,会修改arguments
// arguments[1] = 20;
alert(num2); // 30
alert(arguments[1]); // 30

alert(arguments[0] + num2); //STRING30
alert(arguments[0] + arguments[1]); //STRING30
}
add("STRING", 45);
...全文
84 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhjdg 2014-03-04
  • 打赏
  • 举报
回复
知道就可以了。 反正这句绕口的我理解不过来。 同步是单向的,修改命名参数不会改变arguments的值
萧萧可乐 2014-03-04
  • 打赏
  • 举报
回复
同步 不就是这个意思么? num1 num2 arguments 它们在底部实现时 引用的内存地址是同一块 这个应该不难理解

87,910

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧