Есть другие вопросы о !! (двойное отрицание) уже (здесь, и здесь), и эти вопросы отвечают на мое замешательство по этому поводу. Но то, что я хочу узнать с этим вопросом, более конкретно... Вот это мой случай.
У меня есть eslint для моей кодовой базы, и я недавно исправил все исправимые ошибки.
Одно из этих исправлений, включая отрицание двойного восклицательного знака.
Один пример до исправления и после:
// BEFORE eslint fix:
import { IS_DEV } from "./config/clientUrl";
const sandboxMode = IS_DEV ? true : false;
// AFTER eslint fix:
import { IS_DEV } from "./config/clientUrl";
const sandboxMode = !!IS_DEV;
Исправление было правильным, обнаружив, что оно было избыточным, поскольку IS_DEV здесь уже является логическим значением. Поэтому я знаю, что значение либо истинно, либо ложно.
Итак, есть ли разница в использовании двойного отрицания следующим образом:
const sandboxMode = !!IS_DEV;
и используя просто без него:
const sandboxMode = IS_DEV;
Не будет ли это очередным увольнением в данном случае?
true
илиfalse
. - person Pointy   schedule 27.02.2021IS_DEV
является логическим значением. Но тогда так, конечно, ваш оригинал. Однако Eslint не знает тип, и для значения неизвестного типа ваша фиксированная версия гораздо более идиоматична, чем исходная тройка. - person Robin Zigmond   schedule 27.02.2021