Sym - 一个用 Java 实现的现代化社区平台 • 源码 • 注册

Pipe - 小而美的开源博客平台 • 体验 • 皮肤
Solo - 一个用 Java 实现的博客系统,为你或你的团队创建个博客吧! • 源码下载 
Wide - 一个基于 Web 的 Go 语言 IDE • 教程试用

参数和 arguments 有什么区别

2019-01-27

回答

参数是函数定义时的变量名,而 arguments 的值是函数调用时赋予的。

function myFunction(parameter1, parameter2) {
  console.log(arguments[0]) // "argument1"
}
myFunction("argument1", "argument2") 

加分回答

  • arguments 是一个类似数组的对象,他包含了函数调用时参数的有关信息。
  • arguments 对象是所有(非箭头)函数中都可用的局部变量。
  • 可以使用 Array.from() 或扩展运算符将参数转换为真实数组,如:
var args = Array.from(arguments);
var args = [...arguments];

返回总目录

每天 30 秒


欢迎注册黑客派社区,开启你的博客之旅。让学习和分享成为一种习惯!

3 评论
zhujinlong • 2019-01-28
回复 删除

test

huazhi • 2019-03-08
回复 删除

补充一下,非严格模式下且有传入参数时,参数和 arguments 相互独立,
否则双向绑定;

// 非严格模式下
function a1(x) { 
	x = 2; 
	console.log(x, arguments[0]); 
} 
// 参数缺省
a1(); // 2 undefined  
// 传入参数
a1(4); // 2 2
function a2(x) { 
	arguments[0] = 2; 
	console.log(x, arguments[0]); 
} 
// 参数缺省
a2(); // undefined 2
// 传入参数
a2(4); // 2 2

严格模式下,都是双向绑定

// 严格模式
function a3(x) { 
	'use strict';
	arguments[0] = 2; 
	console.log(x, arguments[0]); 
} 
// 参数缺省
a3(); // undefined 2
// 传入参数
a3(4); // 4 2

function a4(x) { 

	'use strict';
	x = 2; 
	console.log(x, arguments[0]); 
} 
// 参数缺省
a4(); // undefined 2
// 传入参数
a4(4); // 2 4

Vanessa • 2019-03-08
回复 删除

嗯,对的。 use strict 的作用