为什么我需要在函数function.apply(null,arguments)中传递null作为参数?

时间:2019-02-06 12:28:33

标签: javascript functional-programming

我正在尝试一些基本的JS功能:

function addUser(name, age, fun) {
    fun.apply(null, arguments); }

addUser("Peter",25, function(name) { console.log(name+"...from Function");});

但是我似乎不明白为什么fun.apply(null, arguments);中的第一个参数必须为null,为什么我不能简单地做fun.apply(arguments);

1 个答案:

答案 0 :(得分:1)

apply的第一个参数是this对象。您不必传递null,也可以传递this或任何其他对象,但是您不能仅传递arguments本身,因为这样arguments将成为函数中的this对象,而name将不会获得值。

请注意,在此示例中,您可以仅调用fun(name)而不是fun.apply(null, arguments)