Javascript 它是多余的吗!!值为true或false时的布尔结构?

Javascript 它是多余的吗!!值为true或false时的布尔结构?,javascript,boolean,negation,Javascript,Boolean,Negation,关于!!(双重否定)已经(,),这些问题回答了我对此的困惑。但我想知道这个问题更具体。。。这是我的箱子 我在代码库上设置了eslint,最近我修复了所有可修复的错误 其中一个修复包括双感叹号否定 修复前后的一个示例: //在eslint修复之前: 从“/config/clientUrl”导入{IS_DEV}”; const sandboxMode=IS_DEV?真:假; //在eslint修复之后: 从“/config/clientUrl”导入{IS_DEV}”; const sandboxM

关于!!(双重否定)已经(,),这些问题回答了我对此的困惑。但我想知道这个问题更具体。。。这是我的箱子

我在代码库上设置了eslint,最近我修复了所有可修复的错误

其中一个修复包括双感叹号否定

修复前后的一个示例:

//在eslint修复之前:
从“/config/clientUrl”导入{IS_DEV}”;
const sandboxMode=IS_DEV?真:假;
//在eslint修复之后:
从“/config/clientUrl”导入{IS_DEV}”;
const sandboxMode=!!是(u DEV),;
修复在检测到它是冗余时是正确的,因为在这里is_DEV已经是一个布尔值。所以我知道这个值不是真就是假

那么,像这样使用双重否定有什么区别吗

const sandboxMode=!!是(u DEV),;
简单地使用而不使用它:

const sandboxMode=IS\u DEV;

在这种情况下,这不会是另一种冗余吗?

我的回答有几点:

  • 如果您确信IS_DEV将是
    true
    false
    (一个布尔值)而不是其他任何东西,那么您可以使用以下命令:
    const sandboxMode=IS_DEV
  • 如果可能无法设置开发(因此
    未定义
    ),则应使用
    const sandboxMode=!!是_DEV
    ,它将强制
    沙盒模式
    为布尔值
  • 但这也取决于沙盒模式的使用方式
我认为它是完全无害的,并且它使代码可读:一个有经验的JavaScript程序员会认识到您正在创建一个
true
false
值。如果您知道
是布尔值,那么它是多余的。当然,你的原创作品也是如此。虽然Eslint不知道类型,但是对于未知类型的值,您的“固定”版本比原始三元版本更为惯用。