【问题标题】:Why is there so many return statements in node.js为什么node.js中有这么多return语句
【发布时间】:2014-09-11 22:57:55
【问题描述】:

我正在阅读关于backbone.js 的书,并且有一个使用node.js 构建API 后端的示例。本书链接:http://addyosmani.github.io/backbone-fundamentals/

有时会有这段代码

//Update a book
app.put( '/api/books/:id', function( request, response ) {
    console.log( 'Updating book ' + request.body.title );
    return BookModel.findById( request.params.id, function( err, book ) {
        book.title = request.body.title;
        book.author = request.body.author;
        book.releaseDate = request.body.releaseDate;

        return book.save( function( err ) {
            if( !err ) {
                console.log( 'book updated' );
                return response.send( book );
            } else {
                console.log( err );
            }
        });
    });
});

我不明白为什么会有这么多的返回语句,因为这段代码没有返回也可以工作

//Update a book
app.put( '/api/books/:id', function( request, response ) {
    console.log( 'Updating book ' + request.body.title );
    BookModel.findById( request.params.id, function( err, book ) {
        book.title = request.body.title;
        book.author = request.body.author;
        book.releaseDate = request.body.releaseDate;

        book.save( function( err ) {
            if( !err ) {
                console.log( 'book updated' );
                response.send( book );
            } else {
                console.log( err );
            }
        });
    });
});

我错过了什么吗?

【问题讨论】:

  • 你没有错过任何东西。这不是必需的。错误的编码恕我直言。
  • 两年后,我肯定知道这是为了执行一致的回报。 Eslint rule.

标签: javascript node.js return


【解决方案1】:

通常您会看到return 用于出现错误并希望停止执行同一块中的下一行代码的情况。示例:

book.save(function(err) {
  if (err)
    return console.log(err);

  console.log('book updated');
  response.send(book);
});

它还有助于节省一定程度的缩进。除此之外,从(异步)回调或事件处理程序返回值通常是无用的,因为返回值被完全忽略。

【讨论】:

    猜你喜欢
    • 2017-05-22
    • 1970-01-01
    • 2016-05-26
    • 1970-01-01
    • 1970-01-01
    • 2021-05-06
    • 1970-01-01
    • 2019-09-17
    • 1970-01-01
    相关资源
    最近更新 更多