= vs === 布尔表达式的运算符

= vs === operator for Boolean expressions

本文关键字:运算符 布尔表达式 vs      更新时间:2023-09-26

这又是一个新手问题,我只是想弄清楚javascript是如何解释布尔表达式的。

好的,假设我有以下代码:

var boolean = true;
while(boolean){
boolean === false;
};

由于使用了相同的 === 运算符,这将进入无限循环。这是因为 javascript 在使用速记表达式 while(布尔值(时将布尔表达式"true"存储为数字"1"吗?那么 while(布尔值(实际上被解释为 while(布尔值 === 1( 而不是 while(布尔值 === true(吗?

这是因为 javascript 在使用速记表达式 while(布尔值(时将布尔表达式"true"存储为数字"1"吗?

不。

那么 while(布尔值(实际上被解释为 while(布尔值 === 1( 而不是 while(布尔值 === true(吗?

不。

它永远循环,因为您没有做任何事情来更改循环中boolean变量的值。该行

boolean === false;

。没有效果;您正在进行比较,而不是将其结果存储在任何地方。

你似乎====困惑。他们做完全不同的事情。以下是摘要:

  • =赋值运算符。它是你用来给事物赋值的东西。 boolean = true;将值true分配给变量boolean

  • ===严格相等运算符。它用于查看两个事物是否严格相等("严格"="无类型强制"(。因此,a === b true评估ab是否包含具有相同类型且等效的值。

  • ==松散相等运算符。它用于查看两个事物是否松散相等("松散"="具有类型强制"(。因此,a == b将评估true a === b是否为真,或者ab是否具有不同的类型,但类型强制可以将其中一个转换为另一个的类型。(这方面的规则很复杂,但例如"" == 0评估true因为""强制0

= 是赋值运算符。写作

var bool = false;

表示"将名为'bool'的变量设置为'false'">

而 === 是一个严格的相等运算符。写作

bool === false;

检查变量 'bool' 是否包含确切的值 'false'。它的意思是"变量'bool'是否包含值'false'?

它将返回一个布尔值:如果 bool 保持值为 false,则为 true,否则为 false。在这种情况下,它返回 true。

它进入无限循环,因为"bool"永远不会改变值。要将其设置为 true,请使用 =

bool = true;