Javascript范围:为什么foo返回undefined?

时间:2014-12-24 09:18:17

标签: javascript

我在小提琴中尝试了这个片段,它返回未定义但是根据这本书https://github.com/getify/You-Dont-Know-JS/blob/master/scope%20&%20closures/ch1.md它应该返回4所以这是什么问题?

function foo(a) {
    console.log( a + b );
}

var b = 2;

document.write(foo( 2 )); // undefined instead of 4 

4 个答案:

答案 0 :(得分:4)

正如MDN page for return

中所述
  

当在函数中调用return语句时,执行此操作   功能停止了。如果指定,则返回给定值   功能来电。 如果省略表达式,则返回undefined   相反。

答案 1 :(得分:2)

您的函数没有返回值,而是应该执行此操作:

function foo(a) {
    return a + b;
}

var b = 2;

document.write(foo( 2 ));

或者只是执行foo(2);并检查您的控制台是否有正确的号码。

答案 2 :(得分:2)

你在函数foo中执行console.log,它不会返回任何内容。你应该return a + b

答案 3 :(得分:2)

让我们看看您的代码>

你有一个当前只显示a和b之和的函数foo。 它不是1.存储在任何地方 2.退货。需要调用函数来执行某些任务并返回一些东西。

console.log()仅在控制台上显示它,而不是将其返回到调用该函数的任何内容。

function foo(a) {
    console.log( a + b );
}

你应该做什么计算数学在foo()中完成的任务,或者将它存储在一个变量中并返回它。

function foo(a){
    c = a + b;
    console.log(c); //If you want to display it in the console in the first place.
    return c;
}