2016-07-14 64 views
-1

返回某些內容並返回任何內容有什麼區別?Javascript + ExpressJS - 返回[something]或返回(nothing)?

舉一個例子:

user.save(function(err){ 
    if (err && err.code !== 11000) { 
    console.log(err); 
    console.log(err.code); 
    res.send('Another error showed up'); 
    return; 
    } 

    //duplicate key 
    if (err && err.code === 11000) { 
    req.flash('error', 'User already exists'); 
    res.redirect('/signup'); 
    return; 
    } 

    res.locals.user = user; 
    req.session.user = user; 
    //res.locals.session = req.session; 
    res.redirect('/'); 
}); 

它似乎沒有區別它們在所有如果我return res;或只是return(無):

//duplicate key 
    if (err && err.code === 11000) { 
    req.flash('error', 'User already exists'); 
    res.redirect('/signup'); 
    return res; 
    } 

這是很我很難理解沒有returning什麼。

那麼爲什麼以及我們只使用return本身的原因是什麼?

對於像上面這樣的情況,爲什麼我們不要return res;

回答

1

首先,user.save(function callback(){}) save()函數內部的函數是一個回調函數,它將在用戶數據保存到數據庫後調用。

其次,user.save()沒有期待任何返回值,這個回調函數將在保存後被調用。

so return這個回調函數是打破/停止函數走向運行,其意思就是說完成了。

由於user.save()沒有期望任何返回值,所以你可以不返回任何東西或任何東西,這return只會告訴函數是結束的,不管你返回什麼,它都不會被使用。

希望這個清楚你的困惑。:)

+0

謝謝你的答案! :) – laukok

1

你不需要在這裏返回任何東西。製作res.redirect('/')只會將您重定向到適當的回調

此函數是回調函數,不需要返回任何內容。 你所返回的任何東西都不會對功能有任何影響