繁体   English   中英

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

[英]Passing an inline function expression as argument to a regular 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控制台中收到语法错误:“意外令牌”。 我真的无法弄清楚我的程序出了什么问题。 所以,请有人找出我在做什么错?

出问题了,您有两个语法错误:

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

...因为那里有一个不完整的函数声明和一个不完整的函数表达式。

如果您想唤起emotions并传递laugh ,请参考它:

emotions("happy", laugh);

您已经将“ ha ha”功能分配给了较早的laugh ,因此您可以在那里使用它。 函数是JavaScript中的一等值,而不是像某些其他语言那样的独立事物。

注意,在emotions前面没有function关键字。 您仅在创建函数时使用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", laugh); 

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));

您可以从此链接更好地了解

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM