在angular.js中,有一些代码片段使用!!
来判断某个值是否在条件中是真实的。
这是最佳做法吗?我完全理解返回值或其他任务!!用于确保类型为布尔值。但条件检查也是如此吗?
if (!!value) {
element[name] = true;
element.setAttribute(name, lowercasedName);
} else {
element[name] = false;
element.removeAttribute(lowercasedName);
}

答案 0 :(得分:28)
!!value
通常用作强制value
成为true
或false
的方式,具体取决于它是真的还是假的。
在if (value) { ... }
或while (value) { ... }
等控制流语句中,value
前缀为!!
无效,因为根据定义,控制流语句已经强制执行value
为true
或false
。三元运算符表达式value ? a : b
中的条件也是如此。
使用!!value
将value
强制转换为true
或false
是惯用的,但当然只有在附件没有变得多余的情况下才能完成语言结构。
答案 1 :(得分:27)
不,这完全没用,只会让读者感到困惑。
在true
中转换为!!value
的值也会通过if
测试,因为它们是在布尔上下文中评估为true
的值,它们是'重新调用"truthy"。
所以只需使用
if (value) {