Javascript 执行外部函数与使用回调函数——何时使用一个或另一个?

Javascript 执行外部函数与使用回调函数——何时使用一个或另一个?,javascript,function,callback,executioncontext,Javascript,Function,Callback,Executioncontext,回调被称为通过将回调函数(其函数定义)的值传递到传入并执行的“高阶”函数的参数,向高阶函数添加功能 似乎我们可以通过从另一个执行函数中调用外部函数来完成同样的事情 下面更好地说明了我想说的话 //*******************************使用回调************************************************ function A() { // this is the callback function return 'hello';

回调被称为通过将回调函数(其函数定义)的值传递到传入并执行的“高阶”函数的参数,向高阶函数添加功能

似乎我们可以通过从另一个执行函数中调用外部函数来完成同样的事情

下面更好地说明了我想说的话

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

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'
虽然2之间在返回的值方面没有差异,但在执行方式上存在差异

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

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


也许这个例子太简单了,看不出这两个例子之间有什么区别,这有助于我理解何时我会使用一个而不是另一个

想象一下,
B
有时被传递给
A
,但有时被传递给名为
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'
没有回调,你不能这么做


事实上,这就是为什么争论在总体上是强大的。将不同的参数传递给函数可以使代码以没有它们(或等效机制)无法实现的方式保持动态。

卢克,这就是我要寻找的。这是一个看不见森林的例子。非常感谢。