将内联函数表达式作为参数传递给常规函数

时间:2018-06-18 12:46:48

标签: javascript function

我想将内联函数表达式作为参数传递给常规函数声明。

这是代码。

    function emotions(myString, myFunc) {
    console.log("I am " + myString + ", " + myFunc(2));
}

var laugh = function func(num){
    var l = "";
    for(var i = 0; i < num; i++){
        l += "ha";
    }
    return l + '!';
};

  emotions("happy", function func(num));

输出应该是“我很高兴,哈哈!”

但是我在JS控制台中遇到语法错误:“意外的令牌”。 我真的无法弄清楚我的程序有什么问题。那么,有人请弄清楚我做错了什么?

3 个答案:

答案 0 :(得分:3)

你有两个语法错误:

function emotions("happy", function func(num));
// ------------------------------------------^^

...因为你的函数声明不完整,函数表达式不完整。

如果您想致电emotions并传递laugh,请参阅:

emotions("happy", laugh);

您之前已将“ha ha”功能分配给laugh,因此您可以在那里使用它。函数是JavaScript中的第一类值,而不是像其他语言一样的单独值。

请注意function前面没有emotions个关键字。您只在创建功能时使用function关键字,而不是在调用它们时使用。{/ p>

直播示例:

function emotions(myString, myFunc) {
    console.log("I am " + myString + ", " + myFunc(2));
}

var laugh = function func(num){
    var l = "";
    for(var i = 0; i < num; i++){
        l += "ha";
    }
    return l + '!';
};

emotions("happy", laugh);

答案 1 :(得分:0)

function func(num)是一种函数声明,并且它缺少了正文。要只传递该函数,只需执行func,但在这种情况下,您的函数名称实际为laugh

const emotion(state, laugh) => `I am ${state}, ${laugh(2)}!`;

const ha = n => "ha".repeat(n);

console.log(emotion("happy", ha));

答案 2 :(得分:0)

您可以从this link

更好地了解情况