如何禁止使用'!!'的警告(不是这样的)?

时间:2014-05-28 14:43:52

标签: javascript jshint

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

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

因此,jshint会引发以下问题:

line 35  col 20  Confusing use of '!'.

我应该禁用哪些jshint-option来允许此操作?或者那是不可能的?

4 个答案:

答案 0 :(得分:4)

看起来问题出在===上。简单地

if (!!x )

工作正常。

我认为"令人困惑的"部分原因是!!foo === bar很难解析优先级问题(是(!!foo)==bar还是!(!foo==bar)?)。

答案 1 :(得分:2)

警告:这不会评估您希望的方式

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

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

如果你不想让jshint对你大吼大叫,那么当你比较bool ==时,你也不需要===。虽然如果你制作bool值,你根本不需要比较它。

if(myBool)
{
    //some code here
}

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

将值作为bool获取,您可能只想进行字符串比较

var mybool = aString == "true";

应该可以找到你想要的东西然后你可以:

if(myBool)
{
    //some code here
}

答案 2 :(得分:2)

这个特殊的“功能”给社区带来了很多痛苦。 您可以通过将其放在 .jshintrc 配置文件中来禁用它。

{
    "-W018":  true
}

答案 3 :(得分:-1)

要真正回答这个问题(不提供解决方法),可以通过

禁用jshint中的此错误。

-W018