这又是一个新手问题,我只是试图清楚地了解javascript如何解释布尔表达式。
好的,所以说我有以下代码:
var boolean = true;
while(boolean){
boolean === false;
};
由于使用了相同的===运算符,因此进入无限循环。这是因为javascript存储了布尔表达式" true"作为数字" 1"同时使用简写表达式while(boolean)。那么while(boolean)实际上是解释为while(boolean === 1)而不是while(boolean === true)?
答案 0 :(得分:4)
这是因为当使用简写表达式while(boolean)时,javascript将布尔表达式“true”存储为数字“1”。
没有
while(boolean)实际上是解释为while(boolean === 1)而不是while(boolean === true)?
没有
它永远循环,因为你没有做任何改变循环中boolean
变量的值。这条线
boolean === false;
......没有效果;你正在进行比较而不是将结果存储在任何地方。
您似乎对=
和===
感到困惑。他们完全不同的事情。这是一个纲要:
=
是赋值运算符。这是你用来为事物赋值的东西。 boolean = true;
将值true
分配给变量boolean
。
===
是严格相等运算符。它用来看两件事是否严格相等(“严格”=“没有类型强制”)。因此,如果a === b
和true
包含具有相同类型的值,a
会对b
进行评估。
==
是松散等式运算符。它用来看两个东西是否松散相等(“松散”=“与类型强制”)。因此,a == b
会评估true
如果a === b
为真,那么或如果a
和b
有不同的类型,但类型强制可以转换一个或另一个是另一个类型。 (此规则很复杂,但例如"" == 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;