!!之间的区别而且!在JavaScript中

时间:2017-06-07 14:05:07

标签: javascript angularjs

我遇到了那些正在检查df.columns=["A","B","C"] 属性的运算符:

user.rank

它们有何不同,我们可以使用什么呢?

2 个答案:

答案 0 :(得分:15)

单个爆炸(!)用于否定布尔值。

Double bang(!!)用于将truthy / falsey值强制转换为布尔值true或false。

例如

var x = 0; // a falsey value
console.log(x); // logs 0
console.log(!x)// logs true
console.log(!!x)// logs false

var y = "Hello world"; // a truthy value
console.log(y); // logs "Hello world"
console.log(!y)// logs false
console.log(!!y)// logs true

适用于您的具体案例

ng-show="!!user.rank"

ng-show无疑期待一个实际的布尔值,而user.rank显然是真或假 - 将其强制转换为布尔值会恰当地满足你的角度指令。

答案 1 :(得分:-1)

What is the !! (not not) operator in JavaScript?

来自JS wiki on SO

关于!!

  

“将oObject强制为boolean。如果它是假的(例如0,null,undefined等),则为false,否则为true。”

     

“它将非boolean转换为反向布尔值(例如,!5将为false,因为5是JS中的非假值),然后boolean-inverts,因此您将原始值作为布尔值(因此!! 5将是真的)“

     

“所以!!不是运营商,它只是!运营商两次。”