前端 ES6 面试题, 说说你对 ES6 中 rest 参数的理解?
前端 ES6 面试题, 说说你对 ES6 中 rest 参数的理解?
QA
Step 1
Q:: 说说你对 ES6
中 rest 参数的理解?
A:: ES6 中的 rest 参数是用来表示函数参数中的不确定数量参数的。使用 rest 参数可以使函数接受不定数量的参数,并将这些参数存储在一个数组中。语法上,rest 参数在形参名前加上三个点(...
),如 function example(...args) {}
。在函数调用时,所有传递给函数的多余参数都会被收集到这个数组中,供函数内部使用。它与 ES5
中的 arguments
对象类似,但更具灵活性和便利性,因为 arguments
对象是类数组对象,不具备数组的方法,而 rest 参数则是真正的数组。
Step 2
Q:: rest 参数和 arguments 对象的区别是什么?
A:: rest 参数与 arguments
对象的主要区别在于:1)
arguments
是一个类数组对象,而 rest 参数是一个真正的数组,可以直接使用数组的方法;2)
arguments
对象包含所有传递给函数的参数,而 rest 参数仅包括那些未被命名的参数;3)
使用 rest 参数可以轻松与其他命名参数结合使用,而 arguments
则包含所有参数。
Step 3
Q:: 如何在函数中同时使用普通参数和 rest 参数?
A:: 在函数中可以同时使用普通参数和 rest 参数,但需要注意的是,rest 参数必须放在参数列表的最后。比如:function example(a, b, ...rest) {}
,在这个例子中,a
和 b
是普通参数,rest
是收集剩余参数的数组。函数调用 example(1, 2, 3, 4, 5)
时,a
会得到 1
,b
会得到 2
,rest
会得到 [3, 4, 5]
。
Step 4
Q:: 如何在对象解构中使用 rest 参数?
A:: ES6
允许在对象解构中使用 rest 参数,来收集对象中剩余的未解构属性。例如:const {a, b, ...rest} = {a: 1, b: 2, c: 3, d: 4}
,在这个例子中,a
会得到 1
,b
会得到 2
,rest
会得到 {c: 3, d: 4}
。这种方式在处理复杂对象时非常有用,特别是当你只需要从对象中提取部分属性,而忽略其他属性时。