JavaScript:为什么不是';这个回调函数不工作吗?
它说:TypeError:myFunc不是一个函数 我希望输出是“我很高兴,哈哈!” 我正在学习JS中的回调函数JavaScript:为什么不是';这个回调函数不工作吗?,javascript,callback,Javascript,Callback,它说:TypeError:myFunc不是一个函数 我希望输出是“我很高兴,哈哈!” 我正在学习JS中的回调函数 function emotions(myString, myFunc) { console.log("I am " + myString + ", " + myFunc(2)); } var laugh = function(val) { var ha=""; for(var i=0;i<val; i++) { ha=ha+"ha";
function emotions(myString, myFunc) {
console.log("I am " + myString + ", " + myFunc(2));
}
var laugh = function(val) {
var ha="";
for(var i=0;i<val; i++) {
ha=ha+"ha";
}
return ha;
};
emotions("happy",laugh(2));
函数情感(myString,myFunc){
log(“我是”+myString+,“+myFunc(2));
}
var=函数(val){
var ha=“”;
对于(var i=0;i尝试以下方法:
emotions("happy", laugh);
出现此问题是因为您没有传递函数本身,而是将其结果作为参数传递。当您执行laugh()
时,您运行的是函数,而不是它的引用,因此,您传递的是它的结果
调用将在情感
中执行,作为笑(2)
,因此这是正确的方法
函数情感(myString,myFunc){
log(“我是”+myString+,“+myFunc(2));
}
var=函数(val){
var ha=“”;
对于(var i=0;我看到了dupetarget。情绪
=设置超时
,笑
=设置超时
回调。情绪('happy',lough)
会起作用。做情绪(“happy”,lough(2))
基本上等于情绪(“happy”,“haha”)
。对于回调,您需要提供一个函数。因此,在您的示例中,您需要执行情绪(“快乐”,function(){return laugh(2);})
JavaScript的一个重要特性是它将函数视为数据。在交易中,我们说函数是一等公民。回调就是这样工作的:您将函数作为一段数据传递给另一个函数。在JavaScript中,您有时调用、执行、运行函数,有时只需分配它。如果将函数想象成咖啡机,有时需要咖啡,有时需要机器本身。继续……如果需要函数的结果(咖啡),可以通过在名称中添加括号来运行它:doit()
。如果需要函数本身(咖啡机)你引用它时没有括号。那是你的错误:laugh(2)
是函数的结果,而不是函数本身。如果你想让它成为回调函数,它必须是不带括号的laugh
。唯一的另一个问题是,你不能简单地通过回调传递附加参数,所以你不能简单地包含2
@Manngo Wow。非常感谢你解释“回调”“好极了。谢谢。你能告诉我为什么情绪(“快乐”,笑(2));不起作用吗?@Abhayav阅读了更新。非常感谢。我现在明白了。