目前我正在开发一个Angular 4 / Typescript项目。 昨天,在调试应用程序的一部分时,我看到了一个我以前从未见过的运算符:
显然我向其他团队成员询问了这个问题并且他们无法提供答案,他们只是告诉我它似乎是某种特殊的操作员。
今天我一直在谷歌搜索它没有任何成功。我还检查了Node.js控制台,看起来就像预期的那样,是一个双重否定,只是将truthy转换为true,将falsy转换为false。 这两个陈述不会产生同样的效果吗?
if (x) // do something
if (!!x) // do something
因此我的问题: 它实际上是某种特殊的操作符或解决方法来完成某些事情,或者它只是一些开发人员的错误概念?
答案 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);