一道关于arguments的题目

下面直接上代码函数

// 只传第一个参数,第二参数不传
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
相关文章
相关标签/搜索