= vs ===布尔表达式的运算符
再一次,这将是一个新手问题,即时通讯只是试图清楚我的头如何JavaScript解释布尔表达式。= vs ===布尔表达式的运算符
好了,所以说,我有以下的代码位:
var boolean = true;
while(boolean){
boolean === false;
};
这进入一个无限循环,由于使用相同===运算符的。这是因为JavaScript在使用简写表达式while(布尔值)时将JavaScript布尔表达式“true”存储为数字“1”。那么while(boolean)实际解释为while(boolean === 1)而不是while(boolean === true)?
=是赋值运算符。写
var bool = false;
意味着“设置名为‘布尔’为‘假’变”
虽然===是全等运算符。写作
bool === false;
检查变量'bool'是否包含'false'的确切值。它的意思是“变量'bool'的值是否为'false'?”
它将返回一个布尔值:如果布尔值保留为false,则返回true,否则返回false。在这种情况下,它返回true。
它会进入无限循环,因为'bool'永远不会更改值。将其设置为true时,使用=
bool = true;
这是因为JavaScript存储布尔表达式“真”作为数字“1”,同时使用的简写表达,而(布尔值)。
号
所以是同时(布尔)实际上解释为,而(布尔=== 1),而不是同时(布尔===真)?
持续循环,因为你在做什么在循环中改变你的boolean
变量的值号。该行
boolean === false;
...没有效果;你正在做一个比较而不是将它的结果存储在任何地方。
您似乎有=
和===
困惑。他们做了完全不同的事情。这里有一个破败:
=
是赋值运算符。这是你用来分配值的东西。boolean = true;
将的值true
分配给变量boolean
。===
是严格平等运算符。它用于查看两件事是否严格相等(“严格”=“没有类型强制”)。因此a === b
评估true
如果a
和b
包含具有相同类型的值是等价的。==
是松散平等运算符。它用于查看两件事情是否松散相等(“宽松”=“使用类型强制”)。因此,a == b
将评估true
如果a === b
将为真或如果a
和b
有不同的类型,但类型强制可以将一个或另一个转换为其他类型。 (对于这个规则是复杂的,但例如"" == 0
评估true
因为""
胁迫到0
。)
@Izzy:否,在这种情况下,混乱是'='和''===(和之间其他事情)。 – 2015-02-09 11:38:17