更新 :从ES6开始,您可以在调用函数时简单地使用 传播语法 :
func(...arr);
由于ES6还希望将参数视为数组,因此还可以在参数列表中使用传播语法,例如:
function func(...args) { args.forEach(arg => console.log(arg))}const values = ['a', 'b', 'c']func(...values)func(1, 2, 3)并且可以将其与常规参数结合使用,例如,如果要分别接收前两个参数,而其余的则作为数组接收:
function func(first, second, ...theRest) { //...}也许对您有用,您可以知道一个函数需要多少个参数:
var test = function (one, two, three) {}; test.length == 3;但是无论如何,您可以传递任意数量的参数…
apply与不需要
this在函数调用中设置值的情况相比,spread语法更短,更“甜” ,这就是方法。
这是一个应用示例,它是以前的实现方法:
var arr = ['a','b','c'];function func() { console.log(this); // 'test' console.log(arguments.length); // 3 for(var i = 0; i < arguments.length; i++) { console.log(arguments[i]); }};func.apply('test', arr);如今,我只建议
apply仅在需要从数组传递任意数量的参数并设置
this值时使用。
applytake是
this值作为第一个参数,将在函数调用中使用,如果我们
null在非严格代码中使用,则该
this关键字将
func在严格模式下使用“
use strict”显式引用内部的Global对象(窗口)或在ES模块
null中使用。
还要注意,该
arguments对象并不是真正的数组,可以通过以下方式将其转换:
var argsArray = Array.prototype.slice.call(arguments);
在ES6中:
const argsArray = [...arguments] // or Array.from(arguments)
但是
arguments由于传播语法的原因,如今您很少直接使用该对象。



