ES6-Rest 参数

概述:

Rest就是为解决传入的参数数量不一定, rest parameter(Rest 参数) 本身就是数组,数组的相关的方法都可以用。

1.语法:

1 function f(a, b, ...theArgs) {
2 // ...
3 }

 


2.描述:
theArgs以“...”开头,它是一个数组,它的值来自于实际调用者传入[0,theArgs.length) (索引的范围:0到theArgs.length-1)

3.区分rest参数和 参数对象
rest参数不会为每个变量给一个单独的名称,参数对象包含所有参数传递给函数
参数对象不是真正的数组,rest参数是真实的数组实例。例如数组sort、map、forEach、pop的方法都可以直接使用
参数对象有他自己额外的特性(例如callee 属性)
4.从参数变成数组
Rest参数的引入减少样式代码。

 

复制代码
 1 //以前
 2 function f(a, b) {
 3 var args = Array.prototype.slice.call(arguments, f.length);
 4 
 5 // …
 6 }
 7 
 8 // 现在
 9 
10 function f(a, b, ...args) {
11 
12 }
复制代码

 


5.Rest参数可以被解构(通俗一点,将rest参数的数据解析后一一对应)不要忘记参数用[] 括起来,因为它数组嘛

1 function f(...[a, b, c]) {
2 return a + b + c;
3 }
4 
5 f(1) //NaN 因为只传递一个值,其实需要三个值
6 f(1, 2, 3) // 6
7 f(1, 2, 3, 4) // 6 (第四值没有与之对应的变量名)

 


6.例子
计算rest参数的长度,验证是否直接可以用数组的方法

1 function fun1(...theArgs) {
2 console.log(theArgs.length);
3 }
4 
5 fun1(); // 0
6 fun1(5); // 1
7 fun1(5, 6, 7); // 3

 

 

每个参数乘以2

1 function multiply(multiplier, ...theArgs) {
2 return theArgs.map(function(element) {
3 return multiplier * element;
4 });
5 }
6 
7 var arr = multiply(2, 1, 2, 3);
8 console.log(arr); // [2, 4, 6]

 

排序

1 function sortRestArgs(...theArgs) {
2 var sortedArgs = theArgs.sort();
3 return sortedArgs;
4 }
5 //好像一位和两位混合不能进行排序,这需要看一下为甚?主要第一个为主
6 console.log(sortRestArgs(5, 3, 7, 1)); // shows 1, 3, 5, 7

 


对于参数对象arguments不能排序

1 function sortArguments() {
2 //arguments是参数对象不能直接使用sort()方法,因为不是数组实例,需要转换
3 var sortedArgs = arguments.sort();
4 return sortedArgs; // this will never happen
5 }
6 
7 // 会抛出类型异常,arguments.sort不是函数
8 console.log(sortArguments(5, 3, 7, 1));

 

posted @   丸筱  阅读(165)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示