!! x是什么意思

时间:2018-01-31 13:04:12

标签: javascript angular typescript

目前我正在开发一个Angular 4 / Typescript项目。 昨天,在调试应用程序的一部分时,我看到了一个我以前从未见过的运算符:

enter image description here

显然我向其他团队成员询问了这个问题并且他们无法提供答案,他们只是告诉我它似乎是某种特殊的操作员。

今天我一直在谷歌搜索它没有任何成功。我还检查了Node.js控制台,看起来就像预期的那样,是一个双重否定,只是将truthy转换为true,将falsy转换为false。 这两个陈述不会产生同样的效果吗?

if (x) // do something

if (!!x) // do something

因此我的问题: 它实际上是某种特殊的操作符或解决方法来完成某些事情,或者它只是一些开发人员的错误概念?

2 个答案:

答案 0 :(得分:4)

这是一个双布尔否定 - 基本上是一种将任何值转换为纯布尔值true / false的廉价方法。

答案 1 :(得分:0)

这只是一个双重否定。的!运算符通常用于在JavaScript中将某些内容转换为布尔值。

var undefinedVar = undefined;
console.log(!undefinedVar);
console.log(!!undefinedVar);

var nullVar = null;
console.log(!nullVar);
console.log(!!nullVar);

var trueVar = true;
console.log(!trueVar);
console.log(!!trueVar);

var falseVar = false;
console.log(!falseVar);
console.log(!!falseVar);

相关问题