先,值得一提的是,双重否定不是 JavaScript 运算符,而是一个序列中的两个否定。
让我们试着分解一个简单的例子。
!!myVariable
正如MDN上报道的那样,您可以“串联使用几个 NOT 运算符来显式强制将任何值转换为相应的布尔原语”。
换句话说,myVariable在我们的示例中,double-NOT 转换为布尔值。结果布尔值的值取决于 的原始值myVariable。
后退一步:NOT 运算符
简而言之,NOT (!) 运算符将布尔值从trueto转换为false,反之亦然。
但是如果初始值不是布尔值true或false?
我们需要引入真假的概念。
一个虚假的价值是
null;
NaN;
0;
空字符串(""或’'或``);
undefined.
JavaScript 将这些值解释为false. 检查链接以获取虚假值的完整列表。
任何不虚假的都被解释为true。
让我们看一些例子:

虚假值被解释为false,因此 JavaScript 执行else语句内的代码。
请注意,考虑了空对象和空数组true。
