[英]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.