Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript:为什么不是';这个回调函数不工作吗?_Javascript_Callback - Fatal编程技术网

JavaScript:为什么不是';这个回调函数不工作吗?

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

它说: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";
    }
    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阅读了更新。非常感谢。我现在明白了。