介绍
计算机科学领域在数学逻辑中有许多基础,如果你熟悉逻辑,你知道它涉及真理表,布尔算法和比较来确定平等或差异。
JavaScript编程语言使用运算器来评估可以帮助编程中的控制流程的陈述。
在本教程中,我们将讨论逻辑运算符,这些运算符通常用于有条件的陈述,以及如果
,else
和else如果
的关键字,以及三重运算符,如果您有兴趣了解更多有关有条件的陈述,请参阅如何在JavaScript中写有条件的陈述
(LINK0)。
运营商比较
在 JavaScript 中,您可以使用一系列的比较运算符来评估给定的值是否不同或等同,以及一个值是否大于或小于另一个值。
所有比较操作符都返回真
或假
的 Boolean (逻辑) 值(https://andsky.com/tech/tutorials/understanding-data-types-in-javascript#booleans)。
下表概述了在JavaScript中可用的比较操作员。
Operator | What it means |
---|---|
== | Equal to |
!= | Not equal to |
=== | Strictly equal to with no type conversion |
! == | Strictly unequal to with no type conversion |
> | Greater than |
>= | Greater than or equal to |
< | Less than |
<= | Less than or equal to |
让我们详细介绍一下每个运营商。
平等
平等运算器测量运算器双方的值是否等同。
让我们考虑以下几点:
1let x = 3;
2
3x == 3;
由于3
相当于3
,因此收到的输出将是true
的布尔值。
1[secondary_label Output]
2true
相反,如果我们测试x
是否等于另一个整数,我们将收到输出,表示该陈述被验证为错误。
1let x = 3;
2
3x == 5;
1[secondary_label Output]
2false
使用此等效表达式,您还可以测试其他数据类型,例如 字符串和 Booleans。
我们将使用下面的 string 示例。
1let shark = 'sammy';
2
3shark == 'sammy';
4shark == 'taylor';
1[secondary_label Output]
2true
3false
在第一个例子中,表达式返回真
,因为字符串是等同的;在第二个例子中,在鲨鱼 ==
字符串中,表达式返回假
,因为字符串不等同。
值得注意的是,==
运算符不是一个严格的等同性,所以你可以将数和字符串混合在一起,评估为等同性。
1let x = 3;
2
3x == '3';
即使第一行使用数字数据类型,而第二行测试x
与字符串数据类型,两个值均等于3,并且您将收到的输出表示表达式是正确的。
1[secondary_label Output]
2true
由于此操作员对数据类型不严格,它可以支持用户输入字符串而不是数字,例如没有必要转换数据类型来测试等效性。
有许多情况下,您可以使用比较运算器,如==
运算器。例如,您可能希望在评级测试时测试等效性,这样您就可以验证给定的答案是否正确。
1let answer = 10;
2let response = prompt("What is 5 + 5?");
3
4if (answer == response) {
5 console.log("You're correct!");
6}
在这里,如果学生在被提示时回答问题时输入10
,他们将收到他们正确的反馈。
在JavaScript中有许多比较操作器的潜在应用程序,它们将帮助您控制程序的流程。
现在你有一个基础,有一些例子为==
,我们将稍微更简短地前进。
不平等
「!=」運算器測試不等式,以確定運算器兩側的值是否等同。
让我们来看看一个例子。
1let y = 8;
2
3y != 9;
对于这个例子,‘8’不等于‘9’,因此表达式将被评估为‘真’:
1[secondary_label Output]
2true
若要将不平等声明视为虚假
,双方的两个值实际上必须是平等的,如下所述。
1let y = 8;
2
3y != 8
1[secondary_label Output]
2false
在此第二个示例中,操作符 are 两侧的两个值均等,因此表达式不是正确的。
身份
===
运算符决定两个值是否均等值 and 均等类型。这也被称为严格平等运算符,这意味着你不能混合数字和字符串数据类型。
这里有一个例子:
1let z = 4;
2
3z === 4;
4
5z === '4';
我们将收到以下结果。
1[secondary_label Output]
2true
3
4false
该示例表明z
是严格等于4
的(因为它被分配给4
的数值),但它不是4
的字符串。
由于该操作员是严格的,您需要记住,您可能需要将用户输入的数据从一个数据类型转换到另一个数据类型,例如,当您与身份操作员合作时。
无身份
像「===」一樣,運算器「!==」評估一個嚴格的不平等,它考慮到運算器兩側的運算器的值和類型。
我们将回顾下面的例子。
1let a = 18;
2
3a !== 18;
4
5a !== '18';
6
7a !== 29;
上面的结果将如下。
1[secondary_label Output]
2false
3
4true
5
6true
在本示例中,由于a
does 严格等于18
,第一个表达式评估为假
,因为我们正在测试不平等. 在接下来的两个示例中,a
被确定为与字符串18
和数字29
不等,所以这两个表达式评估为真
(因为它们不等)。
大于
JavaScript 中大于符号的符号可能来自数学: >
. 此值评估一个值(表达式的左侧)是否大于另一个值(表达式的右侧)。
像上面的==
运算器一样,大于运算器的不
是严格的,因此允许你混合字符串和数字。
让我们来看看下面的例子。
1let f = 72;
2
3f > 80;
4
5f > '30';
我们将获得以下输出:
1[secondary_label Output]
2false
3
4true
在第一个例子中,72
比80
少,所以第一个表达式评估为false
。在第二个例子中,72
实际上大于30
,而且操作员不介意数字是一个字符串,所以表达式评估为true
。
大于或等于
同样,大于或等于的运算符将评估一个运算符是否符合另一个运算符的门槛。
我们的例子:
1let g = 102;
2
3g >= 90;
4
5g >= 103;
1[secondary_label Output]
2true
3
4false
因为102
是一个大于90
的数字,所以它被认为大于或等于90
。由于102
小于103
,说102
是错误的
。
少于
比操作员较小显示为比操作员较大的镜像版本: <
。
以下几个例子作为示范。
1let w = 1066;
2
3w < 476;
4
5w < 1945;
1[secondary_label Output]
2false
3
4true
在这里,1066
比476
大,所以表达式评估为false
。然而,1066
比1945
小,所以第二个陈述评估为true
。
少于或等于
大于或等的对立,小于或等的运算符 - <=
- 将评估运算器左侧的值是否小于或等于右侧的值。
这里有几个例子。
1let p = 2001;
2
3p <= 1968;
4
5p <= 2001;
6
7p <= 2020;
1[secondary_label Output]
2false
3
4true
5
6true
第一种表达式评估为假
,因为2001
不小于或等于1968
。第二种表达式,因为变量和2001
等于值,结果是真
。
<$>[注]
注:请确保不要将小于或等于运算符(<=
)与JavaScript中的箭头函数(=>
)混淆。
要了解这些比较操作员如何在一个程序中一起工作,请参阅我们的grades.js
示例在我们的 How To Write Conditional Statements in JavaScript教程中。
逻辑操作员
在JavaScript中,有三个 **逻辑运算符,它们连接两个或多个编程陈述以返回一个真
(也称为真
)或假
值,这些最常用于布尔式(逻辑)类型,但可以应用到任何数据类型的值。
这些逻辑运算符在下表中概括。
Operator | Syntax | Description |
---|---|---|
AND | && | Returns true if both operands are true |
OR | || | Returns true if either operand is true |
NOT | ! | Returns true if operand is false |
让我们仔细看看这些运营商的每一个。
和
AND 运算符由两个 ampersands 表示 - &&
- 如果左边和右边的运算符评估为 true,它将返回 'true'。
例如,通过 AND,我们可以检查一件东西是否既有高品质,也有低价。
1// High quality and low price are true
2const highQuality = true;
3const lowPrice = true;
4
5(highQuality && lowPrice);
1[secondary_label Output]
2true
由于两种变量都被评估为真
,所以关节中的 AND 操作返回真
。
或
OR 运算符由两个管道表示,即`` - 如果其中一个运算符是真的,它将返回true
。
在本示例中,我们将检查某些东西是否是高质量
或低价格
。
1// Only low price is true
2const highQuality = false;
3const lowPrice = true;
4
5(highQuality || lowPrice);
1[secondary_label Output]
2true
由于两个条件中的一个(高质量
或低价格
)是真
,整个操作会返回真
。
不
NOT 运算符由一个呼声点表示 - !
- 如果运算符设置为 false
,它将返回 true
,反之亦然。
1const highQuality = true;
2
3!(highQuality);
1[secondary_label Output]
2false
在上述声明中,highQuality
具有true
的值。使用NOT运算器,我们正在检查hiqhQuality
是否评估为false
。
NOT操作员在一开始就有点难理解,要记住的重要部分是,NOT检查是否评估某些东西是假的。
结论
逻辑操作员是JavaScript编程流量控制的构成部分,使用这些操作员将有效帮助您开发程序,以评估陈述并根据陈述是否真实或错误而进入下一个阶段。
要继续了解有关JavaScript的更多信息,请参阅我们的 如何在JavaScript中编码系列,以及我们的 JavaScript标签。