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

时间:2015-02-09 11:30:53

标签: javascript boolean

这又是一个新手问题,我只是试图清楚地了解javascript如何解释布尔表达式。

好的,所以说我有以下代码:

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

由于使用了相同的===运算符,因此进入无限循环。这是因为javascript存储了布尔表达式" true"作为数字" 1"同时使用简写表达式while(boolean)。那么while(boolean)实际上是解释为while(boolean === 1)而不是while(boolean === true)?

2 个答案:

答案 0 :(得分:4)

  

这是因为当使用简写表达式while(boolean)时,javascript将布尔表达式“true”存储为数字“1”。

没有

  

while(boolean)实际上是解释为while(boolean === 1)而不是while(boolean === true)?

没有

它永远循环,因为你没有做任何改变循环中boolean变量的值。这条线

boolean === false;

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

您似乎对====感到困惑。他们完全不同的事情。这是一个纲要:

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

  • ===严格相等运算符。它用来看两件事是否严格相等(“严格”=“没有类型强制”)。因此,如果a === btrue包含具有相同类型的值,a会对b进行评估。

  • ==松散等式运算符。它用来看两个东西是否松散相等(“松散”=“与类型强制”)。因此,a == b会评估true如果a === b为真,那么如果ab有不同的类型,但类型强制可以转换一个或另一个是另一个类型。 (此规则很复杂,但例如"" == 0评估true,因为""强制0。)

答案 1 :(得分:0)

=是赋值运算符。写

var bool = false;

表示"设置名为' bool'的变量。到' false'"

虽然===是严格的相等运算符。写

bool === false;

检查变量' bool'保持准确的值' false'。这意味着"变量' bool'保持价值' false'?"

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

它进入了一个无限循环,因为' bool'从不改变价值。要将其设置为true,请使用=

bool = true;