javascript - javascript中rest参数和展开运算符的使用

标签 javascript ecmascript-6 spread-syntax rest-parameters

ECMAScript 6 中新增的rest 参数有什么用?

例如,在 ECMAScript 5 中,您可以执行以下操作以获取从第二个元素开始的参数数组:

// ES 5
store('Joe', 'money');
store('Jane', 'letters', 'certificates');
function store(name) {
  var items = [].slice.call(arguments, 1); //['money'] in first case
  items.forEach(function (item) {
    vault.customer[name].push(item);
  });
}

这将等同于 ECMAScript 6 中的以下代码:

// ES 6
store('Joe', 'money');
store('Jane', 'letters', 'certificates');
function store(name, ...items) {
  items.forEach(function (item) {
    vault.customer[name].push(items)
  });
}

它们之间的区别只是语法还是存在性能问题?

也适用于展开运算符 (...)

//in ecmascript5
var max = Math.max.apply(null, [14, 3, 77]);
//but in ecmascript6
var max = Math.max(...[14, 3, 77]);

这只是语法更改还是性能问题?

最佳答案

Is the difference between them is just syntax or there's a performance issue?

两者,还有更多...

休息参数:

  1. 是其他语言(Ruby、Python)中的已知习语
  2. 更易于阅读和维护(与 slice 相比)。
  3. 对于初学者更容易理解
  4. 可以(并且很可能会)产生更好的性能,因为引擎可以优化。
  5. 工具更友好,因为它们可以进行静态分析。

关于javascript - javascript中rest参数和展开运算符的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20541339/

相关文章:

javascript - Selenium 的 JavascriptExecutor 在 JMeter 的 JSR223 采样器中不起作用

javascript - 在面向对象的 Javascript 2n 版本中实现练习 4 的 split() 方法

javascript - 模块构建失败: TypeError: The plugin "transform-runtime" didn't export a Plugin instance

reactjs - 在 React 组件中使用展开语法时顺序重要吗?

php - PHP 中的展开语法有何用处?

javascript - React 应用程序中的失败测试

javascript - 如何从图像路径中删除字符串

javascript - 静态元素交互

Javascript:转换代码字符串并返回

JavaScript |展开运算符更新嵌套值