下面直接上代码

// 只传第一个参数,第二参数不传
function a (x, y) {
	arguments[1] = 10;
	console.log(x + y);
}
a(1);//  打印的是undefined
a(1, 2); // 打印的是11
  • 结论
  • 这个y参数和arguments的内存空间是独立,但是他们的值是同步的
  • 此外需注意,如果y参数不传,即使设置arguments[1]的值,也不会反应到y这个命名参数中,这是因为arguments对象的长度是由传入的参数个数所决定的,不是由定义函数时的命名参数个数所决定的,所以第一次传一个参数时会返回undefined
01-03 03:32