JavaScript 逻辑
JavaScript 布尔(逻辑)代表两个值之一:true 或 false。
布尔值
通常,在编程中,您会需要只能有两个值之一的数据类型,比如
- YES / NO
- ON / OFF
- TRUE / FALSE
鉴于此,JavaScript 提供一种布尔数据类型。它只接受值 true 或 false。
Boolean() 函数
您可以使用 Boolean() 函数来确定表达式(或变量)是否为真:
<!DOCTYPE html><html><body><p>显示 Boolean(10 > 9) 的值:</p><button onclick="myFunction()">试一试</button><p id="demo"><script>function myFunction() {document.getElementById("demo").innerHTML = Boolean(10 > 9);}</script></body></html>
或者甚至更简单:
<!DOCTYPE html><html><body><p>显示 10 > 9 的值:</p><button onclick="myFunction()">试一试</button><p id="demo"><script>function myFunction() {document.getElementById("demo").innerHTML = 10 > 9;}</script></body></html>
比较和条件
JS 比较这一章列出了完整的比较运算符。
JS 条件这一章列出了完整的条件语句。
下面是一些例子:
| 运算符 | 描述 | 实例 |
|---|---|---|
| == | 等于 | if (day == "Monday") |
| > | 大于 | if (salary > 9000) |
| < | 小于 | if (age < 18) |
表达式的布尔值是 JavaScript 比较和条件的基础。
所有具有“真实”值的即为 True
<!DOCTYPE html><html><body><p id="demo"><script>var b1 = Boolean(100);var b2 = Boolean(3.14);var b3 = Boolean(-15);var b4 = Boolean("Hello");var b5 = Boolean('false');var b6 = Boolean(1 + 7 + 3.14);document.getElementById("demo").innerHTML ="100 是 " + b1 + "<br>" +"3.14 是 " + b2 + "<br>" +"-15 是 " + b3 + "<br>" +"任何(非空)字符串是 " + b4 + "<br>" +"即使字符串 'false' 也是 " + b5 + "<br>" +"任何表达式(除了零)是 " + b6;</script></body></html>
所有不具有“真实”值的即为 False
0(零)的布尔值为 false:
<!DOCTYPE html><html><body><p>显示 0 的布尔值:</p><button onclick="myFunction()">试一试</button><p id="demo"><script>function myFunction() {var x = 0;document.getElementById("demo").innerHTML = Boolean(x);}</script></body></html>
-0 (负零)的布尔值为 false:
<!DOCTYPE html><html><body><p>显示 -0 的布尔值:</p><button onclick="myFunction()">试一试</button><p id="demo"><script>function myFunction() {var x = -0;document.getElementById("demo").innerHTML = Boolean(x);}</script></body></html>
""(空值)的布尔值为 false:
<!DOCTYPE html><html><body><p>显示 "" 的布尔值:</p><button onclick="myFunction()">试一试</button><p id="demo"><script>function myFunction() {var x = "";document.getElementById("demo").innerHTML = Boolean(x);}</script></body></html>
undefined 的布尔值是 false:
<!DOCTYPE html><html><body><p>显示 undefined 的布尔值:</p><button onclick="myFunction()">试一试</button><p id="demo"><script>function myFunction() {var x;document.getElementById("demo").innerHTML = Boolean(x);}</script></body></html>
null 的布尔值是 false:
<!DOCTYPE html><html><body><p>显示 null 的布尔值:</p><button onclick="myFunction()">试一试</button><p id="demo"><script>function myFunction() {var x = null;document.getElementById("demo").innerHTML = Boolean(x);}</script></body></html>
false 的布尔值(正如您猜到的)是 false:
<!DOCTYPE html><html><body><p>显示 false 的布尔值:</p><button onclick="myFunction()">试一试</button><p id="demo"><script>function myFunction() {var x = false;document.getElementById("demo").innerHTML = Boolean(x);}</script></body></html>
NaN 的布尔值是 false:
<!DOCTYPE html><html><body><p>显示 NaN 的布尔值:</p><button onclick="myFunction()">试一试</button><p id="demo"><script>function myFunction() {var x = 10 / "H";document.getElementById("demo").innerHTML = Boolean(x);}</script></body></html>
布尔可以是对象
通常 JavaScript 布尔是由字面量创建的原始值:
var x = false
但是布尔也可以通过关键词 new 作为对象来定义:
var y = new Boolean(false)
实例
<!DOCTYPE html><html><body><p>永远不要将布尔值创建为对象。</p><p>无法安全地比较布尔和对象。</p><p id="demo"><script>var x = false; // x 是布尔值var y = new Boolean(false); // y 是对象document.getElementById("demo").innerHTML = typeof x + "<br>" + typeof y;</script></body></html>
不要创建布尔对象。它会拖慢执行速度。
new 关键词会使代码复杂化,并产生某些意想不到的结果:
当使用 == 运算符时,相等的布尔是相等的:
<!DOCTYPE html><html><body><p>永远不要将布尔值创建为对象。</p><p>无法安全地比较布尔和对象。</p><p id="demo"><script>var x = false; // x 是布尔值var y = new Boolean(false); // y 是对象document.getElementById("demo").innerHTML = (x==y);</script></body></html>
当使用 === 运算符时,相等的布尔是不相等的,因为 === 运算符需要在类型和值两方面同时相等。
<!DOCTYPE html><html><body><p>永远不要将布尔值创建为对象。</p><p>无法安全地比较布尔和对象。</p><p id="demo"><script>var x = false; // x 是数字var y = new Boolean(false); // y 是对象document.getElementById("demo").innerHTML = (x===y);</script></body></html>
或者甚至更糟。对象无法进行比较:
<!DOCTYPE html><html><body><p>永远不要将布尔值创建为对象。</p><p>无法安全地比较布尔和对象。</p><p id="demo"><script>var x = new Boolean(false); // x 是对象var y = new Boolean(false); // y 是对象document.getElementById("demo").innerHTML = (x==y);</script></body></html>
比较两个 JavaScript 对象将始终返回 false。
完整的布尔参考手册
如需完整的参考手册,请访问本站的 JavaScript 布尔参考手册。参考手册包含有关所有布尔属性和方法的描述和实例。