前端 JavaScript 基础面试题, JavaScript 的 splice 和 slice 函数会改变原数组吗?
前端 JavaScript 基础面试题, JavaScript 的 splice 和 slice 函数会改变原数组吗?
QA
Step 1
Q:: JavaScript 的 splice 和 slice 函数会改变原数组吗?
A:: splice 会改变原数组,而 slice 不会。splice 可以用来删除、替换或添加数组元素,并返回被删除的元素。slice 则返回一个新的数组,包含从原数组中选择的元素(通过起始和结束索引指定)。
Step 2
Q:: 请解释 splice 函数的用法,并给出一个例子
A:: splice(start, deleteCount, item1, item2, ...),start 指定开始位置,deleteCount 表示删除的元素数量,item1, item2, ... 是要添加的新元素。例子:let arr = [1, 2, 3, 4]; arr.splice(2, 1, 'a', 'b'); // 结果:arr 为 [1, 2, 'a', 'b', 4],返回值为 [3]
Step 3
Q:: 请解释 slice 函数的用法,并给出一个例子
A:: slice(begin, end) 返回一个新数组,包含从原数组中 begin 到 end(不包括 end)的元素。例子:let arr = [1, 2, 3, 4]; let newArr = arr.slice(1, 3); // newArr 为 [2, 3]
,arr 不变
Step 4
Q:: 什么情况下应该使用 splice 而不是 slice?
A:: 当你需要修改原数组时使用 splice,例如删除某些元素或在特定位置插入新元素。而当你只需要获取数组的一部分并不改变原数组时,使用 slice。
Step 5
Q:: 请解释 JavaScript 中的原型链(prototype chain)是什么?
A:: 原型链是 JavaScript 实现继承的机制。每个对象都有一个内部链接到另一个对象(即原型),并从中继承属性和方法。这个被链接的对象也有它自己的原型,以此类推,形成一个链条,直到一个对象的原型为 null。
Step 6
Q:: 解释闭包(closure)是什么,并举例说明
A:: 闭包是指有权访问另一个函数作用域中的变量的函数。例子:function outer() { let a = 1; function inner() { console.log(a); } return inner; } const innerFunc = outer(); innerFunc(); // 输出:1