Javascript 范围:为什么 foo 返回未定义

Javascript scope : why foo returns undefined?

本文关键字:返回 未定义 foo 为什么 范围 Javascript      更新时间:2023-09-26

我在小提琴中尝试了这个片段,它返回未定义,但根据这本书 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 

如 MDN 页面中所述:

当在函数中调用 return 语句时,执行此语句 函数已停止。如果指定,则给定值将返回到 函数调用方。如果省略表达式,则返回未定义 相反。

让我们看看你的代码>

你有一个函数foo,它是当前的,只显示a和b的总和。它不是 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;
}

你的函数没有返回一个值,而是你应该这样做:

function foo(a) {
    return a + b;
}
var b = 2;
document.write(foo( 2 ));

或者只是执行foo(2);并检查控制台以获取正确的数字。

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