在 ECMAScript 2018 中,Rest 参数的功能得到了升级。Rest 参数可以将函数中的参数打包成一个数组,方便传递多个参数。此外,新增的剩余参数(rest properties)可以拓展一个对象,将对象的属性合并到一个新的对象上。这篇文章将介绍 Rest 参数中的剩余参数,深入探讨其用法,以及提供实际的代码示例。
什么是 Rest 参数?
在 JavaScript 中,我们使用函数来传递参数。在过去,我们使用 arguments 对象来处理传递的参数。但是,在 ES6 中,我们引入了 Rest 参数,这为参数命名提供了方便,同时也提供了将函数中的参数打包为一个数组的功能,这大大增加了代码的可读性。
下面是一个例子,展示了 Rest 参数如何使用:
function foo(...args) { console.log(args); } foo(1, 2, 3); // [1, 2, 3]
以上代码中,Rest 参数使用了省略号(...)。它可以将传递的参数打包到一个数组里,在函数体内,我们可以使用这个数组来处理传递的参数。
剩余参数(Rest properties)
在 ECMAScript 2018 中,我们引入了剩余参数(rest properties)的功能。它可以拓展一个对象,并将其属性合并到一个新的对象上。例如:
const obj1 = { a: 1, b: 2 }; const obj2 = { c: 3, ...obj1 }; console.log(obj2); // {a: 1, b: 2, c: 3}
在上面的代码中,我们使用 Rest properties 将 obj1 对象中的属性合并到 obj2 对象中。这使得我们可以非常方便地扩展一个对象,将其属性添加到另一个对象上。
更多实际应用的例子
下面是一些实际应用的例子,帮助我们更好地理解如何使用 Rest 参数和剩余参数。
应用 1:添加新的属性
-- -------------------- ---- ------- ----- --- - - -- -- -- -- -- - -- ----- - -- ------- - - ---- ----- ------ - - -------- -- - -- -------------------- -- - -- -- -- -- -- - -
在上面的例子中,我们使用了 Rest 的功能,将 obj 对象中的属性 a 拆分出来,然后将剩余的属性打包成一个新的对象。接下来,我们使用扩展操作符将 newObj 对象和 rest 对象合并成一个新的对象,并添加属性 d。
应用 2:函数调用
function foo(x, y, ...args) { console.log(x, y, args); } foo(1, 2, 3, 4, 5); // 1, 2, [3, 4, 5]
在上面的代码中,我们使用 Rest 参数将传递的参数打包成一个数组 args。在函数体内,我们可以使用这个数组来处理传递的参数。
应用 3:合并对象
const obj1 = { a: 1, b: 2 }; const obj2 = { b: 3, c: 4 }; const mergedObj = { ...obj1, ...obj2 }; console.log(mergedObj); // { a: 1, b: 3, c: 4 }
在上面的代码中,我们使用 Rest properties 将 obj1 和 obj2 对象中的属性合并到 mergedObj 对象上。这使得我们可以方便地将两个对象合并成一个对象。
总结
Rest 参数和剩余参数是 ECMAScript 2018 中引入的新功能。Rest 参数可以将函数中的参数打包成一个数组,方便处理传递的多个参数;剩余参数可以拓展一个对象,并将其属性合并到一个新的对象上。这些功能非常有用,可以帮助我们在日常的开发工作中更加高效地工作。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64abc76848841e989479be08