解释 JavaScript 中非布尔值到布尔值的强制类型转换?
我们将学习 JavaScript 中非布尔值到布尔值的强制类型转换。对于初学者来说,强制类型转换这个词在 JavaScript 中是新的。所以,让我们澄清一下什么是强制类型转换。
强制类型转换是将一个数据类型的变量转换为另一个数据类型的过程。众所周知,JavaScript 不是一种类型严格的语言。因此,我们不需要定义变量的类型。有时,JavaScript 会自动执行强制类型转换,并在输出中产生不可预测的结果。
JavaScript 中有两种类型的强制类型转换。一种是隐式强制类型转换,另一种是显式强制类型转换。在本教程中,我们将逐一学习这两种强制类型转换。
显式强制类型转换
当非布尔值使用 Boolean() 或 !! 等布尔强制类型转换方法显式转换为布尔值时,就会发生显式强制类型转换。
我们将详细讨论这两种方法。
使用双重否定(!!)运算符进行显式强制类型转换
当我们在 JavaScript 中对任何值使用非(!)运算符时,它会将非布尔值转换为布尔值。
一个非(!)运算符给出值的假结果,而两个非(!!)运算符给出布尔值的实际结果。
语法
用户可以按照以下语法使用双重否定运算符将非布尔值强制转换为布尔值。−
var non_bool = "non-bool"; var bool = !!non_bool;
在上面的语法中,第一个非(!)运算符将字符串类型的 non_bool 变量强制转换为布尔变量。第二个非(!)运算符用于获取 non_bool 变量的实际布尔值。
以下是一些使用双重否定运算符的示例−
console.log(!!0); // logs false console.log(!!1); // logs true
在上面的示例中,非布尔值 0 使用双重否定运算符显式转换为布尔值。双重否定运算符将其操作数转换为布尔值,然后对其取反,因此表达式 !!0 等价于 !(!false),其结果为 false。
让我们用 HTML 和 JavaScript 看一个完整的例子。
示例
在这个例子中,我们创建了三个名为 num1、num2 和 num3 的数字变量。此外,我们还使用不同的正数、负数和零值初始化了数字变量。
用户可以在输出中观察数字的实际布尔值。零的布尔值为 false,因为它是在 JavaScript 中的六个假值之一。
<html>
<body>
<h2> Coercion using <i> Doble NOT (!!) </i> Operator </h2>
<p id = "output"> </p>
<script>
let output = document.getElementById("output");
let num1 = 10;
let num2 = 0;
let num3 = -10;
output.innerHTML += "num1 = " + num1 + "<br/>";
output.innerHTML += "num2 = " + num2 + "<br/>";
output.innerHTML += "num3 = " + num3 + "<br/>";
output.innerHTML += "The boolean results of the above number values are given below.<br/>";
// Using Double NOT Operator
num1 = !!num1;
num2 = !!num2;
num3 = !!num3;
output.innerHTML += "num1 = " + num1 + "<br/>";
output.innerHTML += "num2 = " + num2 + "<br/>";
output.innerHTML += "num3 = " + num3 + "<br/>";
</script>
</body>
</html>
使用 Boolean() 构造函数进行显式强制类型转换
在 JavaScript 中,显式强制类型转换是由 JavaScript 开发人员将变量从一种数据类型转换为另一种数据类型的过程。在这里,我们将学习将非布尔值显式转换为布尔值。
我们可以简单地在 JavaScript 中使用“Boolean”构造函数将任何值转换为布尔值。
语法
用户可以按照以下语法将 JavaScript 中的非布尔值强制转换为布尔值。
let var1 = 30; let var2 = Boolean(var1);
在上面的语法中,var1 是数字数据类型,我们使用 Boolean 构造函数将其强制转换为布尔值。
以下是一些使用 Boolean() 构造函数的示例−
console.log(Boolean(0)); // logs false console.log(Boolean(1)); // logs true
在上面的示例中,非布尔值 0 使用 Boolean 函数显式转换为布尔值。Boolean 函数返回其参数的布尔值,因此表达式 Boolean(0) 返回 false。
当我们将任何非布尔值强制转换为布尔值(除了六个假值之外),它始终会返回 true 作为结果。对于六个假值,我们始终会得到 false 布尔值作为结果。
六个假值如下所示。
False
“”
NaN
0
Null
Undefined
示例
在这个例子中,我们创建了不同的变量并用不同的假值初始化了它们。我们可以观察到,当我们将它们强制转换为布尔值时,它始终会返回 false 布尔值作为结果。
<html>
<body>
<h2> Coercion using the <i> Boolean()</i> Constructor </h2>
<p id = "output"> </p>
<script>
let output = document.getElementById("output");
// Creating the variables
let falsy1 = undefined;
let falsy2 = null;
let falsy3 = "";
output.innerHTML += "falsy1 = " + falsy1 + "<br/>";
output.innerHTML += "falsy2 = " + falsy2 + "<br/>";
output.innerHTML += "falsy3 = " + falsy3 + "<br/>";
output.innerHTML +=
"The boolean results of the above falsy values are given below.<br/>";
// coercing the different falsy values to the boolean values.
output.innerHTML += "falsy1 = " + Boolean(falsy1) + "<br/>";
output.innerHTML += "falsy2 = " + Boolean(falsy2) + "<br/>";
output.innerHTML += "falsy3 = " + Boolean(falsy3) + "<br/>";
</script>
</body>
</html>
隐式强制类型转换
当非布尔值在需要布尔值的环境中使用时,就会发生隐式强制类型转换。在这种情况下,JavaScript 会根据一组称为“真值”和“假值”的规则自动将该值转换为布尔值。
以下是一些非布尔值如何强制转换为布尔值的示例−
示例
在这个例子中,我们使用 JavaScript 中图像的 hidden 属性通过点击显示图像−
// Example 1: Implicit coercion in a conditional statement
if (0) {
console.log("This will not be logged");
}
// Example 2: Implicit coercion using the logical NOT operator
console.log(!0); // logs true
console.log(!1); // logs false
在第一个示例中,值 0 用于条件语句中,它使用真值和假值的规则隐式转换为布尔值。在 JavaScript 中,值 0 被认为是假值,因此条件语句将不会执行。
在第二个示例中,逻辑非运算符用于否定非布尔值 0 的布尔值。逻辑非运算符反转其操作数的布尔值,因此表达式 !0 等价于 !false,其结果为 true。
JavaScript 中有两种类型的强制类型转换。一种是隐式强制类型转换,另一种是显式强制类型转换。在本教程中,我们逐一学习了这两种类型的强制类型转换。
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP