Javascript 什么';这是的意思!!x

Javascript 什么';这是的意思!!x,javascript,angular,typescript,Javascript,Angular,Typescript,目前我正在从事Angular 4/Typescript项目。 昨天,在调试应用程序的一部分时,我看到了一个我从未见过的操作员: 很明显,我问了其他团队成员,他们无法提供答案,他们只是告诉我,这似乎是某种特殊的操作员 今天我一直在谷歌上搜索,但没有成功。我还检查了Node.js控制台,它看起来和预期的一样,是一个双重否定,它简单地将truthy转换为true,将falsy转换为false。 这两种说法不会产生同样的效果吗 if (x) // do something if (!!x) // d

目前我正在从事Angular 4/Typescript项目。 昨天,在调试应用程序的一部分时,我看到了一个我从未见过的操作员:

很明显,我问了其他团队成员,他们无法提供答案,他们只是告诉我,这似乎是某种特殊的操作员

今天我一直在谷歌上搜索,但没有成功。我还检查了Node.js控制台,它看起来和预期的一样,是一个双重否定,它简单地将truthy转换为true,将falsy转换为false。 这两种说法不会产生同样的效果吗

if (x) // do something

if (!!x) // do something
因此,我的问题是:
它实际上是某种特殊的运算符或解决方法来完成某些事情,或者它只是某个开发人员的误解?

它是一种双布尔否定-基本上是一种将任何值转换为纯布尔真/假的廉价方法。

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

var undefinedVar=未定义;
console.log(!undefinedVar);
console.log(!!unfinedvar);
var nullVar=null;
console.log(!nullVar);
console.log(!!nullVar);
var-trueVar=true;
console.log(!trueVar);
console.log(!!trueVar);
var FalsVar=false;
console.log(!false-var);

console.log(!!false变量)
将任何值转换为布尔值
true
false
再次否定了这一点,本质上,它是对
true
/
false
的真/假转换。这在这里是完全多余的,没有任何作用。旁注:如果一个初级开发人员不能理解它…这是很公平的。如果整个团队无法…:-/@mdarefull完全偏离了轨道警告:如果您得到的答案是“可能是某个特殊操作员”,并且没有人删除它,则您的团队可能容易出错。当心,这会改变if语句的效果吗?仅仅做if(x)有什么区别吗???@mdarefull没有,
可以完全省略而不产生任何影响。