在我的项目中,jshint抱怨!!
我需要将字符串转换为布尔值
var x = 'true';
if ( !!x === true ) { ... }
因此,jshint会引发以下问题:
line 35 col 20 Confusing use of '!'.
我应该禁用哪些jshint-option来允许此操作?或者那是不可能的?
答案 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