了解JavaScript中的比较和逻辑运算符

来自菜鸟教程
跳转至:导航、​搜索

介绍

计算机科学领域在数理逻辑中有许多基础。 如果您熟悉逻辑,就会知道它涉及真值表、布尔代数和比较以确定相等或差异。

JavaScript 编程语言使用运算符来评估有助于编程控制流的语句。

在本教程中,我们将介绍逻辑运算符。 这些通常与条件语句、if、else 和 else if 关键字以及三元运算符一起使用。 如果您有兴趣先了解更多关于条件语句的内容,请参阅如何在 JavaScript 中编写条件语句。

比较运算符

在 JavaScript 中,您可以使用许多比较运算符来评估给定值是否不同或相等,以及一个值是否大于或小于另一个值。 通常,这些运算符与 变量 中的存储值一起使用。

比较运算符都返回 true 或 false 的 布尔(逻辑)值 。

下表总结了 JavaScript 中可用的比较运算符。

操作员 这是什么意思
== 等于
!= 不等于
=== 严格等于,没有类型转换
! == 严格不等于没有类型转换
> 比...更棒
>= 大于或等于
< 少于
<= 小于或等于

让我们详细介绍每个运算符。

平等

相等运算符测量运算符两侧的值是否相等。

让我们考虑以下几点:

let x = 3;

x == 3;

因为 3 等价于 3,所以接收到的输出将是 true 的布尔值。

Outputtrue

如果我们改为测试 x 是否等于另一个整数,我们将收到表明该语句被验证为假的输出。

let x = 3;

x == 5;
Outputfalse

使用此等价表达式,您还可以测试其他数据类型,例如 strings 和 Booleans。

我们将在下面使用一个字符串示例。

let shark = 'sammy';

shark == 'sammy';
shark == 'taylor';
Outputtrue
false

在第一个实例中,表达式返回 true 因为字符串是等价的。 在 shark == 'taylor' 的第二个实例中,表达式返回 false,因为字符串不相等。

值得注意的是, == 运算符不是严格等价的,因此您 可以 混合计算为等价的数字和字符串。 考虑以下示例。

let x = 3;

x == '3';

即使第一行使用数字数据类型,第二行针对字符串数据类型测试 x,两个值都等于 3,并且您将收到的输出表明表达式为真。

Outputtrue

由于该运算符对数据类型不严格,例如可以支持用户输入字符串而不是数字。 无需将数据类型转换为测试等效性。

在很多情况下,您可以使用比较运算符,例如 == 运算符。 例如,您可能希望在为测试评分时测试等效性。 这样您就可以验证给定答案是否正确。

let answer = 10;
let response = prompt("What is 5 + 5?");

if (answer == response) {
  console.log("You're correct!");
}

在这里,如果学生在提示时输入10来回答问题,他们将收到正确的反馈。

比较运算符在 JavaScript 中有许多潜在的应用,它们将帮助您控制程序的流程。

现在您已经有了 == 的一些示例的基础,接下来我们将简要介绍一下。

不等式

!= 运算符测试不等式,以确定运算符两侧的值是否 不 相等。

让我们考虑一个例子。

let y = 8;

y != 9;

在本例中,8 not 等于 9,因此表达式将被计算为 true:

Outputtrue

对于要考虑的不等式陈述 false,两边的两个值实际上需要相等,如下所示。

let y = 8;

y != 8
Outputfalse

在第二个示例中,运算符 两侧的两个值是 相等的,因此表达式不正确。

身份

=== 运算符确定两个值是否都具有相同的值 和 的类型相同。 这也称为严格相等运算符。 这意味着您不能混合使用数字和字符串数据类型。

这是一个例子:

let z = 4;

z === 4;

z === '4'; 

我们将收到以下输出。

Outputtrue

false

该示例表明 z 是 strictly 等于 4(因为它被分配了 4 的数值),但它是 not 严格等于字符串 '4'。

由于此运算符是严格的,因此您需要记住,您可能需要将用户输入的数据从一种数据类型转换为另一种数据类型,例如,在使用身份运算符时。 这可以帮助您在整个程序中保持数据类型的一致性。

非身份

与 === 类似,运算符 !== 计算严格不等式,它同时考虑运算符两侧的操作数的值和类型。

我们将回顾以下示例。

let a = 18;

a !== 18;

a !== '18';

a !== 29;

以上的输出将如下所示。

Outputfalse 

true

true

在此示例中,由于 a 确实 严格等于 18,因此第一个表达式的计算结果为 false,因为我们正在测试不等式。 在接下来的两个示例中,a 被确定为不等于字符串 '18' 和数字 29,因此这两个表达式的计算结果为 true(因为它们 不 相等)。

比...更棒

JavaScript 中的大于符号可能对数学很熟悉:>。 这将评估一个值(在表达式的左侧)是否大于另一个值(在表达式的右侧)。

与上面的 == 运算符一样,大于运算符是 not 严格的,因此允许您混合字符串和数字。

让我们考虑以下示例。

let f = 72;

f > 80;

f > '30';

我们将收到以下输出:

Outputfalse

true

在第一个实例中,72 小于 ' 80,因此第一个表达式的计算结果为 false。 在第二个实例中,72 实际上大于 '30',并且运算符不关心数字是字符串,因此表达式的计算结果为 true。

大于或等于

类似地,大于或等于的运算符将评估一个操作数是否满足另一个操作数的阈值。 该运算符被键入为 >= 一种介于大于 (>) 和等号 (=) 之间的复合物。

我们的例子:

let g = 102;

g >= 90;

g >= 103;
Outputtrue

false

因为102是比90大的数,所以认为大于等于90。 因为 102 小于 103,所以说 102 >= 103 是 false。 如果 90 或 103 是字符串数据类型,则表达式的计算结果也相同。

少于

小于运算符显示为大于运算符的镜像版本:<。

考虑以下示例作为演示。

let w = 1066;

w < 476;

w < 1945;
Outputfalse

true

这里,1066 大于 476,因此表达式的计算结果为 false。 但是,1066 是 小于 1945,因此第二个语句的计算结果为 true。 同样,476 或 1945 值也可以是字符串。

小于或等于

与大于或等于相反,小于或等于运算符 - <= - 将评估运算符左侧的值是否小于或等于右侧的值。

这里有一些例子。

let p = 2001;

p <= 1968;

p <= 2001;

p <= 2020;
Outputfalse

true

true

第一个表达式的计算结果为 false,因为 2001 不小于或等于 1968。 在第二个表达式中,因为变量和 2001 是相等的值,所以输出是 true。 在第三个表达式中,输出也是 true,因为 2001 是 小于 2020。 同样,这些值也可以表示为字符串,如 '2001',并以相同的方式计算。

注意:一定不要将小于等于运算符(<=)与JavaScript中的箭头函数(=>)混淆。 在我们的教程 Understanding Arrow Functions in JavaScript 中了解有关箭头函数的更多信息。


要了解这些比较运算符如何在程序中协同工作,请参阅我们的 How To Write Conditional Statements in JavaScript 教程中的 grades.js 示例。

逻辑运算符

在 JavaScript 中,有三个 逻辑运算符 ,它们连接两个或多个编程语句以返回 true(也称为“真”)或 false(“假”)价值。 这些最常用于布尔(逻辑)类型,但可以应用于任何数据类型的值。

这些逻辑运算符总结在下表中。

操作员 句法 描述
和 && 如果两个操作数都是 true,则返回 true
或者 如果任一操作数是 true,则返回 true
不是 ! 如果操作数是 false,则返回 true

让我们更详细地查看这些运算符中的每一个。

和

AND 运算符由两个 & 符号表示 - && - 如果左侧和右侧的操作数计算结果为真,它将返回 true。

例如,使用 AND 我们可以检查某样东西是否既高质量又低价。

// High quality and low price are true
const highQuality = true;
const lowPrice = true;

(highQuality && lowPrice);
Outputtrue

由于两个变量的计算结果都是 true,因此括号内的 AND 运算返回 true。 如果任一变量初始化为 false,则 && 表达式将计算为 false。

或者

OR 运算符由两个管道表示 - || - 如果其中一个操作数为真,它将返回 true。

在此示例中,我们将检查某物是 ' highQuality 还是 lowPrice。

// Only low price is true
const highQuality = false;
const lowPrice = true;

(highQuality || lowPrice);
Outputtrue

由于两个条件之一(highQuality 或 lowPrice)是 true,因此整个操作返回 true。 如果 both 条件都是 false,这只会评估为 false。

不是

NOT 运算符由感叹号表示 - ! - 如果操作数设置为 false,它将返回 true,反之亦然。

const highQuality = true;

!(highQuality);
Outputfalse

在上述语句中,highQuality 的值为 true。 使用 NOT 运算符,我们检查 hiqhQuality 的计算结果是否为 false。 如果是 false,则输出将返回 true,但由于 是 true,因此输出将返回 false。

NOT 运算符起初有点难以理解。 要记住的重要部分是 NOT 检查某事是否评估为假。

结论

逻辑运算符是 JavaScript 编程中流控制的构建块。 有效地使用这些运算符将帮助您开发评估语句的程序,并根据语句的真假进入下一阶段。

要继续了解有关 JavaScript 的更多信息,请查看我们的 如何在 JavaScript 中编码系列和我们的 JavaScript 标签。