是!!检查if语句中的truthy值的最佳实践

时间:2014-11-13 10:12:03

标签: javascript angularjs truthiness

在angular.js中,有一些代码片段使用!!来判断某个值是否在条件中是真实的。

这是最佳做法吗?我完全理解返回值或其他任务!!用于确保类型为布尔值。但条件检查也是如此吗?



if (!!value) {
  element[name] = true;
  element.setAttribute(name, lowercasedName);
} else {
  element[name] = false;
  element.removeAttribute(lowercasedName);
}




2 个答案:

答案 0 :(得分:28)

!!value通常用作强制value成为truefalse的方式,具体取决于它是真的还是假的。

if (value) { ... }while (value) { ... }等控制流语句中,value前缀为!!无效,因为根据定义,控制流语句已经强制执行valuetruefalse。三元运算符表达式value ? a : b中的条件也是如此。

使用!!valuevalue强制转换为truefalse是惯用的,但当然只有在附件没有变得多余的情况下才能完成语言结构。

答案 1 :(得分:27)

不,这完全没用,只会让读者感到困惑。

true中转换为!!value的值也会通过if测试,因为它们是在布尔上下文中评估为true的值,它们是'重新调用"truthy"

所以只需使用

if (value) {