我正在学习JS,并且阅读到可以将函数作为参数传递给其他变量。在以下代码中,当我将匿名函数作为参数传递时,它给出了"Uncaught SyntaxError: Unexpected token function"

var x;
function myfun(x, function(x) {
   console.log("Value of x is: "+ x );
});

myfun(2,4);


我对了解错误背后的逻辑更感兴趣。我究竟做错了什么?

谢谢
bt

最佳答案

在您的代码中,您似乎试图声明两个函数,一个名为myfun,带有两个参数,另一个是未命名(匿名)函数,带有一个参数。您的代码中似乎有两个语法错误:(1)函数myfun没有函数主体,并且(2)您在myfun的参数列表中声明一个函数。

让我们首先声明两个函数(给第二个函数一个名称并给myfun一个函数体)来解决这个问题:

function myfun(x, functionToBeCalled) {
  functionToBeCalled(x);
}

function functionToBePassed(x) {
   console.log("Value of x is: "+ x );
}


现在,我们可以调用函数myfun并将两个参数传递给它,一个是x的值,另一个是要在myfun中调用的函数-函数functionToBePassed

myfun(2, functionToBePassed);


如果要匿名传递第二个函数,请在调用函数myfun时声明此函数,而不是在声明myfun时声明:



//declare myfun
function myfun(x, functionToBeCalled) {
  functionToBeCalled(x);
}

//call myfun and pass a function as an argument
myfun(2, function(x) {
  console.log("Value of x is: "+ x );
});

10-06 07:58