调用函数vs返回函数调用 - 差异?

时间:2017-06-23 07:52:15

标签: javascript

如果有功能,请说foo

function foo() {
    console.log('bar');
}

然后在JavaScript中,从另一个函数调用函数之间是否有任何区别,如下所示:

function baz() {
    foo();
}
baz();

并返回函数调用,如下所示:

function baz() {
    return foo();
}
baz();

两种方法都给出相同的输出(字符串输出:'bar')。

4 个答案:

答案 0 :(得分:2)

如果你返回,那么函数的其余部分将不会执行...但是在你的例子中,在返回行之后没有更多的代码,所以没有区别。

如果您没有显式返回值,则返回undefined ...但foo仍会返回undefined 您不会做任何事情baz的返回值,所以没有区别。

两个例子之间没有实际区别。

答案 1 :(得分:1)

你没有回复任何东西。你只是在console.log('bar')foo。它只是啊calling没有返回。查看原始的返回调用语句。它从你的第二个中提供undefined

第二个错误

function foo() {
    return 'bar'; //this is return the `bar`
}

function baz() {
     foo(); //its calling but not returning 
}
 console.log(baz());

所以你需要在另一个函数调用中返回函数

function foo() {
    return 'bar';
}

function baz() {
    return foo(); //return is important to returning the value from the function
}
 console.log(baz());

答案 2 :(得分:1)

严格地说,你的第二个例子在两个方面是错误的: 1)使用不返回任何内容的函数调用return 2)你没有检查返回值,那么需要用这种方式调用它?

但即使你要检查,它也会返回undefined,所以没用。

答案 3 :(得分:0)

输出是相同的,所以似乎没有理由更喜欢一种调用函数而不是另一种函数的方法。毕竟他们都默认返回undefined。但是,我认为即使返回结果未定义,返回函数的结果有时也很有用。通过返回undefined,它可以在if条件中捕获,这将允许其他语句执行,如下所示:



function foo() {
    console.log('bar');
}

function baz() {
    foo();
}
baz();

function baz2() {
    return foo();
}

if ( baz2() == undefined) {
    // execute statements ...
}