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布尔
价值。