前端 ES6 面试题, ️说说 ES6 扩展运算符的作用及使用场景?
前端 ES6 面试题, ️说说 ES6 扩展运算符的作用及使用场景?
QA
Step 1
Q:: 说说 ES6
扩展运算符的作用及使用场景?
A:: ES6
扩展运算符(spread operator)用于将一个数组或对象展开成单独的元素。它可以用于函数调用、数组合并、对象复制等场景。常见的使用场景包括:
1.
数组合并:const arr1 = [1, 2, 3]; const arr2 = [4, 5, 6]; const combined = [...arr1, ...arr2];
2.
数组拷贝:const arr = [1, 2, 3]; const copy = [...arr];
3.
对象合并:const obj1 = {a: 1, b: 2}; const obj2 = {c: 3}; const merged = {...obj1, ...obj2};
4.
函数参数传递:function sum(x, y, z) { return x + y + z; } const numbers = [1, 2, 3]; console.log(sum(...numbers));
Step 2
Q:: 扩展运算符如何处理嵌套对象和数组?
A:: 扩展运算符在浅拷贝嵌套的对象或数组时,只会复制一层结构,而不会递归复制嵌套的部分。因此,嵌套对象和数组内部的元素依然会保持引用关系。如果需要深拷贝,可以使用诸如JSON.parse(JSON.stringify(obj))
等方法。
Step 3
Q:: 扩展运算符与Object.
assign的区别是什么?
A:: 两者都可以用于对象的合并和拷贝,但扩展运算符的语法更加简洁,并且支持数组的操作。而Object.assign
只用于对象,并且在合并时,它会忽略不可枚举的属性,而扩展运算符会保留这些属性。
Step 4
Q:: 说说在 ES6
以前如何实现扩展运算符的功能?
A:: 在 ES6
之前,可以通过Array.prototype.concat
方法实现数组的合并,通过apply
方法将数组作为参数传递给函数,或使用slice
方法复制数组。对于对象合并,可以使用Object.assign
或手动遍历属性进行拷贝。