MST

星途 面试题库

面试题:JavaScript 函数参数的复杂处理与箭头函数特性

假设有一个函数 `combine`,它接受任意数量的数组作为参数,要求将这些数组中的所有元素合并到一个新数组中并返回。请用普通函数和箭头函数两种方式实现,同时说明在这种场景下箭头函数的 `this` 指向问题及处理方法。
15.2万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试

普通函数实现

function combine() {
    let result = [];
    for (let i = 0; i < arguments.length; i++) {
        result = result.concat(arguments[i]);
    }
    return result;
}

箭头函数实现

const combine = (...arrays) => [].concat(...arrays);

箭头函数的 this 指向问题及处理方法

  • this 指向问题:箭头函数没有自己的 this,它的 this 指向定义时所在的外层作用域的 this。在上述 combine 箭头函数实现中,由于函数内部没有使用 this,所以不存在因 this 指向导致的问题。
  • 处理方法:如果在箭头函数内部需要使用外层作用域的 this,可正常使用。若需要改变 this 指向,由于箭头函数不能通过 callapplybind 改变 this 指向,可在外层普通函数中获取 this 并传递给箭头函数,或者使用 Function.prototype.bind 绑定外层 this 到一个新的普通函数,再在箭头函数中调用该普通函数。