布莱恩F爱
向一位来自Portlandyobet英雄联盟的谷歌开发专家学习Angular、Web技术和Node.js。
广告 ·ultimatecourses.com
用终极课程学习Angular的正确方法

JavaScript中的双感叹号是什么?

如果你注意到某人的JavaScript代码中有两个感叹号(!!),你可能会好奇它是做什么用的。这非常简单:将变量转换为布尔值(真或假)是一种很简单的方法。让我解释一下。

JavaScript类型!= '静态'

JavaScript不是静态语言,而是动态语言。这意味着变量可以引用或保存任意的值类型,更进一步,那类型可以在任何时候改变。您是喜欢静态语言还是动态语言由您来决定。

但在JavaScript中,我们当然可以有类型的概念。下面是JavaScript中各种数据类型的快速列表:

  • 布尔
  • 字符串
  • 数量
  • 对象

布尔数据类型是所有数据类型中最简单的,因为它是一个简单的位值:0(假)或1(真)。

真正的和真相

我们可以将变量设置为布尔值,并在对if语句求值时使用它。下面是一个简单的例子。

函数(){varthisIsTrue=真正的;如果(thisIsTrue){窗口警报(“当然是!”);}}

当执行上述函数时,我们将得到警告这当然是!因为这个变量thisIsTrue是否被设置为布尔值真正的

现在,让我们看看JavaScript如何将非布尔值转换为布尔值。

函数(){var没有什么='';如果(没有什么){窗口警报(“什么”);}其他的{窗口警报(“嗯?”);}}

当执行上述函数时,我们将得到警告嗯?因为变量的值没有什么被认为是假的。这就是通常所说的真相与美甲师

以下值被JavaScript认为是美甲师史:

  • 空字符串:”“
  • 0
  • 未定义的

JavaScript认为下列值是真实的:

  • 对象:{}
  • 数组:[]
  • 非空字符串:“什么”
  • 零以外的数字:3.14
  • 日期:新的日期();

执行代码的JavaScript引擎将在必要时(例如在if语句中求值时)尝试将值转换(或强制)为布尔值。

那么,为什么要用双感叹号呢?

在某些情况下,您可能希望将变量强制转换为显式布尔值。为什么?第一个原因是大多数时候开发人员不使用类型安全的比较运算符。

类型安全的比较运算符有:

  • 严格相等:= = =
  • 严格意义上的不平等:= = !

在使用类型安全的比较运算符时,您要同时检查值是否相等(或不相等)以及它们的类型是否相同。如果没有类型安全的比较运算符,JavaScript引擎就可以自由地根据真/假逻辑强制变量为真或假。

要将JavaScript变量转换为布尔值,只需使用两个感叹号:

函数(){var的名字=“布莱恩”;/ /提醒“字符串”窗口警报(typeof的名字);/ /把布尔var保龄球=!!的名字;/ /提醒“布尔”窗口警报(typeof保龄球);}

在上面的示例代码中,我们对字符串进行了类型转换“布莱恩”到一个布尔价值。因此第二个警报将指示该变量现在是a布尔价值。

布莱恩F爱

嗨,我是布莱恩。我对TypeScript, Angular和Node.js感兴趣。我和我最好的朋友邦妮结婚了,我住在波特兰,我经常滑雪。