简体   繁体   中英

node js callback() function is not defined?

Hello I am new to node js and I am trying to write a simple callback function however get "ReferenceError: sum1 is not defined", can anyone help me? code:

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

However, I tried to use function sum1(a,b,callback){...} and it works. Is this a naming problem? Can anyone explain a little bit?

You have to define the function before you call it. When you use the form:

sum1 = function() {...} 

to define your function, that definition MUST occur BEFORE you use the function. That's because the function is not assigned to the sum1 variable until that line of code executes. So, if you try to execute sum1(...) before that line runs, then sum1 is not yet defined and you get the exception.

If you use the form:

function sum1() {...}

Then, the symbol sum1 is defined at parse time BEFORE any code executes so the order of placement in the file is not an issue.

You have to define sum1 prior to calling it, or use a function declaration:

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

Or

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

Function declarations can be after the code calling it. However, for clarity's sake, you should always define a function (either way) before you use it in your code.

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

This is a function expression , so you can't call sum1() before it's definition , move it above the function call.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM