2016-10-07 6 views
0

こんにちは私はnode.jsに関連した以下のコードを理解しています。Probemの理解OR演算子in nodejs

var config = { 
    local: { 
     mode: 'local', 
     port: 3000 
    }, 
    staging: { 
     mode: 'staging', 
     port: 4000 
    }, 
    production: { 
     mode: 'production', 
     port: 5000 
    } 
} 
module.exports = function(mode) { 
    return config[mode || process.argv[2] || 'local'] || config.local; 
} 

私は

return config[mode || process.argv[2] || 'local'] || config.local; 

この部分を理解することはできません。 OR演算子はどのように動作し、返されますか?を返します。

+2

これは重複している可能性がありますか? http://stackoverflow.com/questions/2802055/what-does-the-construct-x-x-y-mean –

答えて

0

それに相当する:最後の部分(|| config.local)が無駄になるようconfig['local']config.localは、同じ値を返すこと

var r; 

if(mode && config[mode]) { 
    r = config[mode]; 
} else if(process.argv[2] && config[process.argv[2]]) { 
    r = config[process.argv[2]]; 
} else if(config['local']) { 
    r = config['local']; 
} else { 
    r = config.local; 
} 
return r; 

注意。

+0

これは意味があります...ありがとう – theadnangondal

0
return config[mode || process.argv[2] || 'local'] || config.local; 

EDIT:上記のコードでは、囲み角括弧内のすべてがconfig [key]にアクセスする前に評価されます。

+0

ありがとう...それはそういう意味で働いているので、これは正しいと思います。誰かがあなたに否定的な1票をくれた理由を知らない... – theadnangondal

+0

うれしいことです! – nham

+0

私はそれが間違っているので、downvotedされたと思う。キー式が評価され、 'config'への一回の検索が実行されます。等価です: 'var temp = mode || process.argv [2] || '地元';戻り値config [temp] || config.local; ' – cartant