Javascript回调函数执行

问题描述:

我不确定这个的正确术语。但我想写一个接受另一个函数并执行它的函数。 例如。Javascript回调函数执行

function test(data, aFunc) { 
    var newData = data + " Shawn"; 

    aFunc.call(newData); 
} 

test("hello", function(data){ 
    alert(data); 
}); 

数据应该包含“hello Shawn”字符串。请帮我改写这个正确的方式。

+1

您正在寻找的术语是“高阶函数” – Breton 2010-01-06 20:35:33

call方法的第一个参数是用来设置this关键字(函数上下文)明确,调用的函数内部,如:

function test(data, aFunc) { 
    var newData = data + " Shawn"; 

    aFunc.call(newData); 
} 

test("hello", function() { 
    alert(this); // hello Shawn 
}); 

如果要调用一个函数,而不我们在乎的上下文(this关键字),您可以直接调用它,而不call

function test(data, aFunc) { 
    var newData = data + " Shawn"; 

    aFunc(newData); // or aFunc.call(null, newData); 
} 

test("hello", function (data) { 
    alert(data); 
}); 

请注意,如果你简单地调用像aFunc(newData);功能或使用callapply方法与this参数设置为nullundefined,则this关键字里面调用函数将引用全局对象(window)。

看起来不错,但你可以改变

aFunc.call(newData); 

aFunc(newData); 

你接近。 “调用”的第一个参数是“范围”参数。在这种情况下,它并不重要,因为你没有在匿名函数中的任何地方使用“this”,所以任何值都足够了。

function test(data, aFunc) { 
    var newData = data + " Shawn"; 

    aFunc.call(this, newData); 
} 

test("hello", function(data){ 
    alert(data); 
});