为什么这段代码最后返回的结果是12不是21?

挑战
  • 588
function side(arr) {
  arr[0] = arr[2];
}
function a(a, b, c = 3) {
  c = 10;
  side(arguments);
  return a + b + c;
}
a(1, 1, 1);
回复
阅读 885
2 个回答
✓ 已被采纳

https://developer.mozilla.org...

当非严格模式中的函数有包含剩余参数、默认参数和解构赋值,那么arguments对象中的值不会跟踪参数的值(反之亦然)。相反, arguments反映了调用时提供的参数:

因为a函数里面的arguments,是你调用函数输入的值,不会随着你代码里的赋值(c = 10)而发生变化,你在a函数里面打印一下 arguments 就能看出来了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏