最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - node js callback() function is not defined? - Stack Overflow

programmeradmin4浏览0评论

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?

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?

Share Improve this question asked Dec 2, 2015 at 3:58 Tao QinTao Qin 431 gold badge1 silver badge3 bronze badges 1
  • 1 Function declarations are hoisted, function expressions are not. – Felix Kling Commented Dec 2, 2015 at 4:19
Add a comment  | 

4 Answers 4

Reset to default 9

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.

Check if it is not in scope.. it's reference might need to be passed.. I had a similar issue in Protractor, so I had to pass the function reference and bingo it worked for me.. ;)

发布评论

评论列表(0)

  1. 暂无评论