= vs === 布尔表达式的运算符
= vs === operator for Boolean expressions
这又是一个新手问题,我只是想弄清楚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
评估a
和b
是否包含具有相同类型且等效的值。==
是松散相等运算符。它用于查看两个事物是否松散相等("松散"="具有类型强制"(。因此,a == b
将评估true
a === b
是否为真,或者a
和b
是否具有不同的类型,但类型强制可以将其中一个转换为另一个的类型。(这方面的规则很复杂,但例如"" == 0
评估true
因为""
强制0
。
= 是赋值运算符。写作
var bool = false;
表示"将名为'bool'的变量设置为'false'">
而 === 是一个严格的相等运算符。写作
bool === false;
检查变量 'bool' 是否包含确切的值 'false'。它的意思是"变量'bool'是否包含值'false'?
它将返回一个布尔值:如果 bool 保持值为 false,则为 true,否则为 false。在这种情况下,它返回 true。
它进入无限循环,因为"bool"永远不会改变值。要将其设置为 true,请使用 =
bool = true;
- 布尔表达式-与AND、OR逻辑运算符混淆以及它们的工作方式
- 什么's VBA和Javascript布尔表达式之间的区别
- 评估JavaScript中给出布尔表达式的字符串
- 从树遍历中构建布尔表达式的算法
- = vs === 布尔表达式的运算符
- ngAnimateSwap-使用布尔表达式不会按预期设置动画
- 为什么这个布尔表达式不返回 true
- 如何在复杂的布尔表达式上避免三元
- 用pegjs解析布尔表达式链
- 反转布尔表达式
- 在不带eval的Javascript中计算字符串中的布尔表达式
- 为什么这个JavaScript代码在布尔表达式不再为true之后进入for循环
- 带有条件和赋值运算符的表达式
- 遍历json抽象语法树来构建布尔表达式
- JavaScript布尔表达式中的多个比较运算符
- javascript在布尔表达式中使用优化吗?
- 是Chrome Javascript评估布尔表达式正确
- 用于布尔表达式计算的Javascript eval
- 从JavaScript变量中计算布尔表达式
- 对于一个使用三元运算符的表达式,我得到了一个奇怪的结果