node js callback()函数没有定义?

时间:2015-12-02 03:58:12

标签: javascript node.js callback

您好我是节点js的新手,我正在尝试编写一个简单的回调函数,但是得到" ReferenceError:sum1未定义",任何人都可以帮助我吗? 代码:

sum1(1,2, function(sum){
  console.log(3 + sum);
});
sum1 = function (a,b, callback){
  callback(a + b);
};

但是,我尝试使用     function sum1(a,b,callback){...} 它的工作原理。这是一个命名问题吗?任何人都可以解释一下吗?

3 个答案:

答案 0 :(得分:8)

您必须在调用之前定义该函数。当您使用表格时:

sum1 = function() {...} 

定义你的函数,该定义必须在你使用函数之前发生。那是因为在该代码行执行之前,函数未分配给sum1变量。因此,如果您在该行运行之前尝试执行sum1(...),那么sum1尚未定义,您将获得异常。

如果您使用以下表单:

function sum1() {...}

然后,在任何代码执行之前,在解析时定义符号sum1,因此文件中的放置顺序不是问题。

答案 1 :(得分:2)

您必须在调用它之前定义sum1,或使用函数声明:

// Define first:
var sum1 = function (a,b, callback){
    callback(a + b);
};
sum1(1, 2, function(sum) {
    console.log(3 + sum);
});

或者

// Function Declaration:
sum1(1, 2, function(sum) {
    console.log(3 + sum);
});
function sum1(a,b, callback){
    callback(a + b);
};

函数声明可以在调用它的代码之后。但是,为了清楚起见,在代码中使用它之前,应始终定义一个函数(无论哪种方式)。

答案 2 :(得分:1)

sum1 = function (a,b, callback){
  callback(a + b);
};

这是一个函数表达式,所以你不能在它定义之前调用sum1(),把它移到函数调用之上。