是否可以在javascript函数参数列表中调用多个函数

Is it possible to call more than one function within a javascript function parameter list

本文关键字:函数 调用 列表 参数 javascript 是否      更新时间:2023-09-26

我正在学习javascript回调或更高阶的函数。请帮助我理解以下函数中的错误。我正在尝试调用多个函数作为回调函数。这是不允许的吗?

我的代码是:

var firstFunction = function(item1){
    console.log("calling firstFunction");
    console.log(item1);
}
var secondFunction = function(item2, f1){
    console.log("calling secondFunction");
    f1(item2);
}
//secondFunction("first", firstFunction);
var thirdFunction = function(item3, f2,f1){
    console.log("calling thirdFunction");
    f2(item3);
}
thirdFunction("second", firstFunction, secondFunction);

您所做的是正确的,但您必须在第三个函数中通过f1作为回调

var thirdFunction = function(item3, f2,f1){
    console.log("calling thirdFunction");
    f2(item3, f1);
}

您的代码还可以,回调深度没有限制,但会出现堆栈溢出错误。

在您的代码中,在脚本停止后,您将在第三个函数中执行firstFunction。我想你想在thirdFunction中执行secondFunction,然后在第二个函数中执行第一个:

function firstFunction (item){
    console.log("calling firstFunction");
    console.log(item);
}
function secondFunction (item, f1){
    console.log("calling secondFunction");
    f1(item);
}
function thirdFunction (item, f1,f2){
    console.log("calling thirdFunction");
    f2(item,f1);
}
thirdFunction("second", firstFunction, secondFunction);

该代码将以所描述的方式工作。

请看一下这个脚本

var firstFunction = function(item1, f2) {
  document.body.innerHTML += item1 + " | This is firstFunction <br/> ";
  //console.log("calling firstFunction");
  f2(item1, secondFunction);
}
var secondFunction = function(item2, f1) {
  document.body.innerHTML += item2 + " | This is  secondFunction <br/> ";
}
var thirdFunction = function(item3, f1, f2) {
  document.body.innerHTML += item3 + " | This is thirdFunction <br/> ";
  f1(item3, f2);
}
thirdFunction("chain started third function", firstFunction, secondFunction);
<html>
<body></body>
</html>