2016-07-14 6 views
-1

何かを返すことと何も返さないことの違いは何ですか?例えばJavascript + ExpressJS - return [something]またはreturn(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()の内部で機能し、コールバック関数です。データベースに保存されたユーザーデータの後に呼び出されます。

第2に、user.save()は戻り値を期待していませんでした。このコールバック関数は保存後に呼び出されました。

このコールバック関数の中のreturnは、機能を中断/中止することで、実行に向かう途中で終了します。

user.save()は戻り値を期待していなかったので、何も返すことはできません。このreturnは返された内容に関係なく、関数が終了したことを通知します。

これはあなたの混乱をクリアします:

+0

答えに感謝します! :) – laukok

1

あなたはここで何かを返す必要はありません。 res.redirect( '/')を作成すると適切なコールバックにリダイレクトされます

この関数はコールバックであり、何も返す必要はありません。 返すものはありません。

関連する問題