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