解释一下JavaScript中的非布尔值与布尔值的强制关系
我们将学习JavaScript中的非布尔值与布尔值的强制关系。对于初学者来说,coercion这个词在JavaScript中是新的。所以,让我们澄清一下什么是coercion。
胁迫 是将一种数据类型的变量转换为另一种数据类型。我们都知道,JavaScript不是一种类型严格的语言。所以,我们不需要定义变量的类型。有时,JavaScript会自动地胁迫变量,并在输出中给出不可预知的结果。
在JavaScript中,有两种类型的强制力。一种是隐式强制,另一种是显式强制。我们将在本教程中逐一学习这两种强制方式。
明确的胁迫
当一个非布尔值被明确地转换为布尔值时,就会发生显式协整,使用布尔协整方法之一,如Boolean()或!
我们将详细讨论这两种方法。
使用Double NOT (!!)操作符进行显式强制操作
当我们在JavaScript中对任何数值使用not (!)操作符时,它将非布尔值转换为布尔值。
一个not(!)操作符给出了数值的错误结果,而两个not(!!)操作符给出了布尔值的实际结果。
语法
用户可以按照下面的语法,使用双非运算符将非布尔值胁迫为布尔值。-
在上面的语法中,第一个not(!)操作符将字符串类型的non_bool变量胁迫为布尔变量。第二个not(!)操作符用来获取non_bool变量的实际布尔值。
下面是一些使用双非运算符的例子——。
在上面的例子中,非布尔值0被明确地用双非运算符强制为布尔值。双非运算符将其操作数转换为布尔值,然后将其倒置,因此表达式!!0相当于!(!false),其值为false。
让我们看看一个带有HTML和JavaScript的完整例子
示例
在这个例子中,我们创建了三个名为num1、num2和num3的数字变量。此外,我们还用不同的正值、负值和零值初始化了这些数字变量。
用户可以观察到输出中数字的实际布尔值。0的布尔值是假的,因为它是JavaScript中虚假的布尔值之一。
使用Boolean()构造函数的显式协整性
在JavaScript中,显式强制是指javascript开发者将变量从一种数据类型转换为另一种类型。在这里,我们将学习非布尔值到布尔值的显式强制法。
我们可以简单地使用JavaScript中的 “布尔 “构造函数,将任何数值转换为布尔值。
语法
用户可以按照下面的语法,在JavaScript中把非布尔值胁迫成布尔值。
在上面的语法中,var1是数字数据类型,我们使用布尔构造函数将其强制为布尔类型。
下面是一些使用Boolean()构造函数的例子—-。
在上面的例子中,非布尔值0被明确地用布尔函数胁迫为布尔值。布尔函数返回其参数的布尔值,所以表达式Boolean(0)返回false。
当我们将任何非布尔值强制转换成布尔值时,除了六个假值之外,它的结果总是为真。对于这六个假值,我们总是得到假的布尔值作为结果。
下面给出了六个假的布尔值。
- False
- “”
- NaN
- 0
- Null
- Undefined
示例
我们在这个例子中创建了不同的变量,并以不同的假值对它们进行初始化。我们可以观察到,当我们把它们强制变成布尔值时,它总是给出一个假的布尔值作为结果。
隐性胁迫
当一个非布尔值被用在一个期望有布尔值的上下文中时,就会发生隐含的强制力。在这种情况下,JavaScript会使用一组被称为 “truthy “和 “falsy “值的规则自动将该值转换为布尔值。
示例
在这个例子中,我们使用JavaScript中图像的隐藏属性,通过点击来显示图像—-。
在第一个例子中,值0被用在条件语句中,它被隐含地强制为一个布尔值,使用的规则是Truthy和Falsy值。在JavaScript中,值0被认为是虚假的,所以条件语句将不会被执行。
在第二个例子中,逻辑NOT运算符被用来否定非布尔值0的布尔值。逻辑NOT运算符颠倒了其操作数的布尔值,所以表达式!”0 “等同于!”false”,其结果为 “true”。
在JavaScript中,有两种类型的强制力。一种是隐式强制,另一种是显式强制。我们在本教程中逐一学习了这两种类型的强制。