ES6 rest parameter详解编程语言

rest,查百度词典,释义为 [rest] n. 休息; 剩余部分; 支持物; 宁静,安宁,rest paramter直译过来就是剩余参数,也可以叫可变参数;它用来收集多个参数到一个collection中,是标准的数组类型,也就意味着它可以调用Array的所有方法;

function f1(arg1,arg2,...restArgArr){ 
 
	console.log("arg1:%s,arg2:%s,restArgArr:%s,isArray:%s", 
		arg1,arg2, 
		restArgArr, 
		restArgArr instanceof Array);  
	//输出结果:arg1:1,arg2:2,restArgArr:3,4,5,isArray:true 
} 
 
f1(1,2,3,4,5); 

为了更深入的理解,看一下babel编译的结果
源码

function f1(...restArgArr){ 
 
	console.log( 
		restArgArr instanceof Array); 
	 
} 

编译后

function f1() { 
	for (var _len = arguments.length, restArgArr = Array(_len), _key = 0; _key < _len; _key++) { 
		restArgArr[_key] = arguments[_key]; 
	} 
 
	console.log(restArgArr instanceof Array); 
} 

可以看到,是将arguments放入Array中,这下清楚了,可变参数就是个数组

可变参数与arguments的区别

  • 可变参数是标准数组类型,可以使用数组的所有方法,拥有数组的所有属性,而arguments是个“伪数组”,仅有length属性、可以通过下标获取值,但不能使用数组的方法比如indexOf()
 
function f(...restArg){ 
	console.log(restArg.indexOf(11));//0 
	console.log(arguments.indexOf(11));//arguments.indexOf is not a function 
} 
 
f(11); 
  • arguments是内置属性,每个函数都有,而可变参数只有显式声明才有;

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/20298.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论