gpt4 book ai didi

javascript - 执行外部函数与执行外部函数使用回调函数——何时使用其中之一?

转载 作者:行者123 更新时间:2023-12-02 22:44:32 25 4
gpt4 key购买 nike

据说回调通过将回调函数的值(其函数定义)传递给“高阶”函数的参数来向高阶函数添加功能,并在该参数中传递并执行该函数。

看来我们可以简单地通过从另一个正在执行的函数中调用外部函数来完成同样的事情。

以下内容更好地说明了我想说的内容。

//********************** 使用回调 ****************** **********************************

function A() { // this is the callback function
return 'hello';
};

function B(callback) { // this is considered a 'higher-order' function because it takes a
// function definition as a parameter. the function definition of A
// -- taken from A in Global memory -- is assigned to callback
var output = callback(); // we call callback and run it
// the value of callback, is assigned to the variable output
console.log(output);
console.log("goodbye")
};

B(A); // logs 'hello' 'goodbye'

//***** 将上面的内容与从另一个函数内调用外部函数进行比较 *****

function A() { 
return 'hello';
};

function B() {
var output = A(); // we call function A, from inside function B,
// the value returned by A, is assigned to a variable inside B
console.log(output);
console.log("goodbye")
};

B(); // logs 'hello' 'goodbye'

虽然两者在返回值方面没有区别,但它们的执行方式存在差异。

回调函数接受 A 的函数定义并将其附加到一个名为回调的新名称。执行回调,并在回调的本地执行上下文中运行。

与我们从 B 内部调用 A 时发生的情况相比,A 在其自己的本地执行上下文中执行。

也许这个例子太简单了,看不出两者之间存在差异,这将帮助我理解何时使用其中一个而不是另一个。

最佳答案

想象一下,有时会传递 BA,但有时会传递名为 C 的函数。如果B直接调用一个函数,它只能调用该函数。但如果它传递了一个要调用的函数,它就可以调用传递给它的任何函数:

function A() {
return 'hello';
};

function C() {
return 'Привет';
};

function B(callback) {
var output = callback();

console.log(output);
console.log("goodbye")
};

B(A);
// => 'hello'
// => 'goodbye'
B(C);
// => 'Привет'
// => 'goodbye'

如果没有回调,你就无法做到这一点。

确实,这就是为什么论证通常都很有力。将不同的参数传递给函数可以使代码变得动态,而没有这些参数(或等效机制)就不可能实现这种动态。

关于javascript - 执行外部函数与执行外部函数使用回调函数——何时使用其中之一?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58459838/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com