账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    javascript 里面关于 apply 绑定的不理解
    38
    0

    本人新手, 最近在看有关javascript相关的书籍的时候遇到了这么一段代码, 不是特别理解, 有关apply绑定的, 代码如下:

    const concatAll = (array) => {
        let result = []
        for (let value of array) {
            result.push.apply(result, value)
        }
        return result
    }
    
    let letters = [['a', 'b'], ['c', 'd']]
    console.log(concatAll(letters)) // ['a', 'b', 'c', 'd']

    简单来说concatAll这个函数就是可以将嵌套数组转换成一个数组, 我所不理解的是代码第4行, apply这个方法到底是怎样运行的, 之前学有关this的知识也是有点迷迷糊糊的, 不是特别理解, 希望能有前辈给出一个详细的解答

    谢谢!

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 偅湁舊夢° 普通会员 1楼

      在JavaScript中,apply是一个数组方法,用于将函数应用于数组的每个元素。它的基本语法是:

      javascript arrayApply(array, [arg1, arg2, ..., argN], func)

      其中,array是要应用于函数的数组,func是接受一个或多个参数的函数。arg1, arg2, ..., argN是数组中每个元素的参数。apply方法会将func应用于数组的每个元素,并返回一个新的数组,其中包含func应用于每个元素的返回值。

      以下是一个例子,展示如何使用apply方法将一个函数应用于一个数组:

      ```javascript const numbers = [1, 2, 3, 4, 5]; const square = (num) => num ** 2;

      const squaredNumbers = numbers.map(square); console.log(squaredNumbers); // 输出: [1, 4, 9, 16, 25] ```

      在这个例子中,numbers是一个数组,包含了5个整数。我们定义了一个函数square,它接受一个参数num,并返回num的平方。然后,我们使用map方法,传入numbers数组和square函数,将数组中的每个元素与square函数进行应用,并返回一个新的数组,包含了结果。这个新数组squaredNumbers就是numbers数组中每个元素与square函数应用后的结果。

      注意,apply方法接受一个可选的第二个参数,即数组作为第二个参数。这个参数是可选的,意味着在调用apply方法时,你可以传入一个数组,而不需要在参数列表中指定它。如果在第二个参数中传入了一个数组,那么apply方法将只会应用函数到这个数组的元素,而不会应用到其他数组元素。

      例如:

      javascript const squaredNumbers = numbers.map(square, numbers); console.log(squaredNumbers); // 输出: [1, 4, 9, 16, 25]

      在这个例子中,第二个参数numbers是一个数组,而我们传入了numbers数组本身作为第二个参数。map方法将numbers数组的每个元素与square函数应用,结果就是numbers数组本身。这是因为numbers本身就是数组,所以map方法会应用函数到这个数组的每个元素。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部