嵌套在WHILE循环中的IF语句的结果(Javascript)
以下是我的完整代码(javascript): 让我困惑的是,这个IF语句嵌套在while循环中。我知道这段代码是正确的,但我不明白为什么当hasbublegum设置为FALSE时它会绕过IF语句 我最初的想法是打印到控制台会产生:嵌套在WHILE循环中的IF语句的结果(Javascript),javascript,loops,if-statement,while-loop,boolean-logic,Javascript,Loops,If Statement,While Loop,Boolean Logic,以下是我的完整代码(javascript): 让我困惑的是,这个IF语句嵌套在while循环中。我知道这段代码是正确的,但我不明白为什么当hasbublegum设置为FALSE时它会绕过IF语句 我最初的想法是打印到控制台会产生: Choo Choo Chocolate has bubblegum Icy Mint has bubblegum Cake Batter has bubblegum Bubblegum has bubblegum 我是否遗漏了一个关键的基本概念,即如果语句忽略FAL
Choo Choo Chocolate has bubblegum
Icy Mint has bubblegum
Cake Batter has bubblegum
Bubblegum has bubblegum
我是否遗漏了一个关键的基本概念,即如果语句忽略FALSE的布尔值?代码是正确的,实际上唯一设置为
true的产品是“Bubblegum”
如果您想要获得所需的结果,应按如下方式更改布尔掩码:
var hasBubbleGum = [true, true, true, true];
if
语句中没有错误,唯一的true
条件是最后一个hasbublegum
bool数组
我不明白为什么hasBubbleGum设置为FALSE时它会绕过IF语句
它没有绕过if
语句:执行if
语句,评估其条件(hasbublegum[i]
),看到结果值为false
,因此不执行附加到它的语句。if
运行,但由于除了i=3
之外的所有条目的hasbublegum
都为false,因此您看不到其他条目的任何输出,仅针对i=3
我是否遗漏了一个关键的基本概念,即IF语句忽略了FALSE的布尔值
是的,你是。这就是if
的全部要点。在大多数语言中,if
语句遵循以下模式:
if (expression) then {statements}
在许多语言中,然后
是隐含的,而不是打印出来的。{statements}
仅当(表达式)
为true
或'thruthy'时,才执行,这些语言允许对布尔值进行强制转换,或缺少本机布尔值类型。例如,在许多语言中,0
被认为是false
,任何不0
的东西都被认为是true
您的hasbublegum[i]
是一个表达式,它将根据索引i
处数组的内容返回一个布尔值。您的困惑可能是因为不理解像==
这样的条件表达式的作用;它们只是“特殊函数”,根据操作数返回true
或false
if
语句是最基本的原语之一。流控制语句的目标是基于某些条件“控制程序执行流”。while
循环也是一个控制流语句;只要条件保持为真,其作用域内的代码将在循环中执行。请向我们展示整个循环。我们没有看到右大括号,因此前面可能有更多语句。特别是我们看不到索引变量i
发生了什么,如果有的话。if检查条件是真是假。由于hasbublegum[0]
为false,IF解析为false,通常会尝试处理else
(似乎没有-您的代码似乎不完整)。。所以它什么都不做。。。增加计数器(也没有显示,但我假设它在那个里的某个地方),转到下一个迭代。“输出”仅在找到索引4I上的真实值时显示。很抱歉,我完全忘了在我的postConsider中完成循环。我正在努力学习使用面向对象的样式。相关项的并行数组是个坏主意var-products={{name:'gum',hasbublesgum:true},{name:'chocolate',hasbublegum:false}……}
我对Javascript和编程基本上是新手。我现在读的那本书(headfirstjavascript)已经为几章的对象做了铺垫,但我现在正在读数组一章。这段代码来自于书中。哦,好的,这很有意义。当括号内的语句用比较运算符比较两个值时,IF语句并不复杂,但当我得到这个IF语句时,它通过我进行了一个循环(双关语)。@jake.wies:啊,是的,和你一起。旁注:括号内的位是表达式,而不是语句。在JavaScript中,表达式被求值,然后(如果有必要)强制为布尔值(在您的例子中,这是不必要的,因为数组中的值是布尔值)。在胁迫中,任何“虚假”的东西都被认为是虚假的。这些值是0
,“
,null
,未定义的,NaN
,当然还有false
。其他任何东西都是“真实的”,并且if
会进入附加到它的语句中。
var hasBubbleGum = [true, true, true, true];
if (expression) then {statements}