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

Bar*_*tta 12 javascript truthiness angularjs

在angular.js中,有一些代码片段用于!!检查某个值是否在条件中是真实的.

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

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

Tim*_*lds 33

!!value通常被用来强制value成为或者,true或者false,分别取决于它是真实的还是虚假的.

在控制流语句,例如if (value) { ... }while (value) { ... },前缀value!!没有任何影响,因为控制流语句已根据定义,胁迫的value是任一truefalse.三元运算符表达式中的条件也是如此value ? a : b.

使用!!value强迫valuetrue或者false是习惯,但当然应该当通过所附的语言结构,不是由它的冗余才能这样做.

  • 这是一个更好的答案,然后另一个说它完全没用.正如您所指出的,当您需要将表达式强制转换为"true"或"false"时,例如当函数需要布尔参数时,有一个用例. (6认同)
  • @SunilD。请针对以下问题阅读问题:“如果条件”。 (2认同)

Den*_*ret 32

不,它完全没用,只会让读者感到困惑.

这将被转换为数值!!if也通过了true考验,因为他们是被评估的值!!value在布尔情况下,它们被称为"truthy".

所以只需使用

if (value) {
Run Code Online (Sandbox Code Playgroud)

  • 是的,它在javascript中没用. (2认同)
  • @IliasT在很多情况下,甚至在JavaScript中,您都需要*布尔值。您可能还想为由其他人管理的API提供布尔值,因为它更干净,而且您不必检查值的解释方式。当我说这没用的时候,我只是专门指的是“ if”条件下的使用。 (2认同)