JavaScript剩余操作符Rest Operator

2022-12-18 0 1,003

责任编辑适宜JavaScript新手写作

余下运算符

以后这首诗JavaScript进行运算符(Spread operator)如是说传授过进行运算符。余下运算符和进行运算符的则表示形式那样,都是四个点 …,但她们的采用情景会相同。

余下模块

表述表达式的这时候,假如表达式的模块以… 为后缀,则改模块是余下模块(rest parameter)。余下模块则表示模块特征值不确认的模块条目。在表达式被初始化时,该std会正式成为两个字符串,字符串中的原素都是传达给该表达式的多出的std的值。

function sum(a,b,…args){ console.log(args.length); // 传进去的模块的特征值 3 let s = a + b; if(args && args.length){ args.forEach(i => {s += i}); } return s; } sum(1, 2, 3, 4, 5 ); // 传进去的模块的特征值 3

当中第两个stda有关联的是1,第四个stdb有关联的2,…args则表示的是[3, 4, 5]。

和arguments的差异

下面余下模块args是两个字符串,而表达式的arguments是两个伪字符串。应此余下模块能采用字符串的有关形式sort,map,forEach,pop,而arguments无法。

arguments想变为字符串,能透过Array.prototype.slice.call形式,采用余下运算符能防止将arguments转成字符串的麻烦事。

// 下面的标识符演示了余下字符串 function sum(a,b,){ var args = Array.prototype.slice.call(arguments, sum.length); console.log(args.length); // 传进去的模块的特征值 3 let s = a + b; args.forEach(i => {s += i}); return s; } sum(1, 2, 3, 4, 5 );

而采用余下运算符,则不需要转化,直接采用,更加方便。

余下运算符与解构赋值

我们知道,ES6 允许按照一定模式,从字符串和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。 比如如下标识符:

let array = [1,2,3] let [a,b,c] = array; // a 1, b 2, c 3

再比如如下标识符:

let obj = {a:1,b:2,c:3} let {a,b,c} = obj; // a 1, b 2, c 3

在解构赋值时,能采用余下运算符。余下运算符所操作的变量会匹配在解构赋值中所有其他变量未匹配到的属性。

比如如下标识符,others会匹配到first和second对于属性的余下的属性:
const { first, second, …others } = { first: 1, second: 2, third: 3, fourth: 4, fifth: 5 } first // 1 second // 2 others // { third: 3, fourth: 4, fifth: 5 }

对象中余下的属性值被打包起来构造两个新的对象赋值给了others。

字符串也能透过余下运算符,把余下的原素打包成两个新的字符串赋值给余下属性,标识符如下:

let array = [1,2,3,4,5]; let [a,b,…c] = array; // a 1,b 2, c [3,4,5]

余下运算符和进行运算符

某种程度上,能任务余下运算符是进行运算符的相反操作。进行运算符会”进行“字符串编程多个原素,余下运算符会把多个原素压缩成两个单一的原素。

欢迎关注公众号“ITman彪叔”。彪叔,拥有10多年开发经验,现任公司系统架构师、技术总监、技术培训师、职业规划师。熟悉Java、JavaScript。在计算机图形学、WebGL、前端可视化方面有深入研究。对程序员思维能力训练和培训、程序员职业规划和程序员理财投资有浓厚兴趣。JavaScript余下运算符Rest Operator

相关文章

发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务