我想将内联函数表达式作为参数传递给常规函数声明。
这是代码。
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控制台中遇到语法错误:“意外的令牌”。 我真的无法弄清楚我的程序有什么问题。那么,有人请弄清楚我做错了什么?
答案 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
更好地了解情况