我如何抑制使用'!!'的警告(不是)?

问题描述 投票:1回答:3

在我的项目中,jshint抱怨!!,我需要将字符串转换为布尔值

var x = 'true';
if ( !!x === true ) { ... }

因此,jshint引发以下问题:

line 35  col 20  Confusing use of '!'.

我应禁用哪个jshint-option来允许此操作?还是不可能?

javascript jshint
3个回答
4
投票

[问题似乎出在===。简单地

if (!!x )

工作正常。

我认为“令人困惑”的部分是!!foo === bar难以按优先级进行解析(是(!!foo)==bar还是!(!foo==bar)?)。


2
投票

警告:这不会评估您想要的方式

var myBool = Boolean("false");  // == true

var myBool = !!"false";  // == true

如果您不希望jshint对您大吼大叫,那么在比较bool ==时也不需要===是相同的。但是,如果您要确定布尔值,则根本不需要进行比较。

if(myBool)
{
    //some code here
}

if(!myBool)
{
    //some code here
}

为了获得布尔值,您可能只想进行字符串比较

var mybool = aString == "true";

应该可以为您提供所需的东西,然后您就可以:

if(myBool)
{
    //some code here
}

-1
投票

要真正回答这个问题,不提供解决方法,可以通过以下方式禁用jshint中的此错误:>

-W018

© www.soinside.com 2019 - 2024. All rights reserved.