Оба варианта сравнения значений переменных в JavaScript являются правильными. Разница между ними заключается в порядке операндов, но результат сравнения будет одинаковым.
В первом варианте, "object" === typeof exports && "undefined" !== typeof module, сначала проверяется, является ли тип переменной exports равным строке "object", а затем проверяется, не является ли тип переменной module равным "undefined". Это обеспечивает условие истины только тогда, когда exports имеет тип "object" и module не имеет тип "undefined".
Во втором варианте, typeof exports === "object" && typeof module !== "undefined", сначала проверяется, равен ли тип переменной exports строке "object", а затем проверяется, является ли тип переменной module отличным от "undefined". Это также обеспечивает условие истины только в том случае, если exports имеет тип "object" и module не имеет тип "undefined".
Оба варианта выполняют одно и то же сравнение и дают одинаковый результат. Выбор между ними основан на предпочтениях или стиле кодирования. Важно сохранять консистентность и использовать любой из вариантов сравнения во всех частях кода для соблюдения идиоматического стиля и обеспечения читаемости кода.