Javascript 什么';这是的意思!!x
目前我正在从事Angular 4/Typescript项目。 昨天,在调试应用程序的一部分时,我看到了一个我从未见过的操作员: 很明显,我问了其他团队成员,他们无法提供答案,他们只是告诉我,这似乎是某种特殊的操作员 今天我一直在谷歌上搜索,但没有成功。我还检查了Node.js控制台,它看起来和预期的一样,是一个双重否定,它简单地将truthy转换为true,将falsy转换为false。 这两种说法不会产生同样的效果吗Javascript 什么';这是的意思!!x,javascript,angular,typescript,Javascript,Angular,Typescript,目前我正在从事Angular 4/Typescript项目。 昨天,在调试应用程序的一部分时,我看到了一个我从未见过的操作员: 很明显,我问了其他团队成员,他们无法提供答案,他们只是告诉我,这似乎是某种特殊的操作员 今天我一直在谷歌上搜索,但没有成功。我还检查了Node.js控制台,它看起来和预期的一样,是一个双重否定,它简单地将truthy转换为true,将falsy转换为false。 这两种说法不会产生同样的效果吗 if (x) // do something if (!!x) // d
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变量)这只是一个双重否定。这个在JavaScript中,运算符通常用于将某个值转换为布尔值。我认为第一个not运算符会将该值转换为布尔值,第二个not运算符会将其取反。@Taha听起来比实际情况复杂得多<代码>
将任何值转换为布尔值true
或false
和
再次否定了这一点,本质上,它是对true
/false
的真/假转换。这在这里是完全多余的,没有任何作用。旁注:如果一个初级开发人员不能理解它…这是很公平的。如果整个团队无法…:-/@mdarefull完全偏离了轨道警告:如果您得到的答案是“可能是某个特殊操作员”,并且没有人删除它,则您的团队可能容易出错。当心,这会改变if语句的效果吗?仅仅做if(x)有什么区别吗???@mdarefull没有,代码>可以完全省略而不产生任何影响。