module
が未定義ではなく (既定のオブジェクトであるため未定義ではありません) 、真のもの (既定では未定義) である場合module.exports
、 thenexports
が割り当てられparam
、関数に渡されます。
exports
は次に と比較されますが、最初に がオブジェクトの由来であるmodule.exports
ため、それらは同じです。module.exports
(が割り当てられるため、他の場所で実行されている場合とexports
同じにはなりません(たとえば、ではなくmodule.exports
を取得するブラウザ) 。)window
module
{}
param
質問に関する再コメントを更新します。
うーん、間違っているかもしれませんが、((typeof module ..) || {}) は true を返しますが、「エクスポート」オブジェクトは返さないと思いました
No.&&
は (左から右に) テストする最初の偽物として評価するか、(すべてが真である場合) テストする最後の真のものとして評価します。
typeof module !== "undefined"
が true であるため、テストします。module.exports
これも true であるため、 を返しますmodule.exports
。
(||
は、テストした最初の真または最後の偽を返すので、 を返しますmodule.exports
)