首页 > 解决方案 > JavaScript 应用函数的第一个参数

问题描述

我开始apply从这个文档中学习这个功能

在以下示例中,函数调用 withapply和 that withoutapply具有相同的输出。

console.log(Math.max(5, 6, 2, 3, 7)); // output:7
console.log(Math.max.apply(null, [5, 6, 2, 3, 7])); // output:7

但是,当我在以下示例中采用相同的方式时,输出是不同的。

class Animal { 
  speak() {
    return this;
  }
}

let obj = new Animal();
let speak = obj.speak;
console.log(speak()); // output:undefined
console.log(speak.apply(null, [])); // output:null

似乎null作为第一个参数传递apply可能会改变函数的行为。使用undefined没有这种副作用。例如:

console.log(Math.max.apply(undefined, [5, 6, 2, 3, 7])); // output:7
console.log(speak.apply(undefined, [])); // output:undefined

那么使用它是否undefinednull大多数情况下更安全?(假设我们只关注函数调用没有this对象的情况)

标签: javascriptapply

解决方案


推荐阅读