我以为我必须这样做:
if (building.floorplan || selectedCategory !== 'outdoor') {
// run code
}
(如果建筑物有平面布置图或者所选类别不在室外,则运行代码。)
但事实证明,该代码仅适用于&&
:
if (building.floorplan && selectedCategory !== 'outdoor') {
// run code
}
(如果建筑物有平面布置图并且所选类别不在室外,则运行代码。)
第一种情况是不是也要运行代码?如果条件满足,如果有平面图或所选类别不在室外吗?
答案 0 :(得分:4)
如果建筑物有平面布置图或者如果选择了建筑物,则运行代码 类别不是户外。
如果您使用OR ||
运算符,那么您说如果第一个运算符为真,则无需向前看。
所以,
if (building.floorplan || selectedCategory !== 'outdoor') {
// run code
}
如果building.floorplan
不是假的,将不会超出第一个条件。
另一方面,如果您使用AND &&
,那么您说如果第一个是假的,则无需向前看
所以,
if (building.floorplan && selectedCategory !== 'outdoor') {
// run code
}
如果building.floorplan
不真实,
将不会超越第一个条件。
第一种情况是不是也要运行代码?由于条件满足 如果有平面图或所选类别不在户外?
第一种情况是检查是否有floorplan
,然后无需查看下一个条件。因此,否 - 第一个条件将无法正常工作。
答案 1 :(得分:1)
我怀疑这与type
所属的.floorplan
有关。正如您在问题下方的评论中所提到的,floorplan
是一个字符串。
从代码中无法理解的事实表明,一些更具表现力的代码应该是当天的顺序。未来的开发人员会发现难以出现,并且一眼就能理解错误值代表什么 - 是""
还是"no floorplan"
还是"ain't no body got a floorplan"
等等。
我会建议像:
if(build.floorplan !== "" || selectCategory !== "outdoor") {...}
真正的比较将取决于您的特定应用程序的上下文。
或者,在构建对象中添加一个方法,例如hasFloor
来执行检查,因此可以将方法重写为:
if(build.hasFloorplan() || selectCategory !== "outdoor") {...}
就个人而言,除非它是bool类型,否则我将明确检查我的条件,特别是像JS这样的语言。
答案 2 :(得分:0)
如果您需要假设这两个变量不等于室外,请执行以下操作:
if ((building.floorplan == selectedCategory) && (selectedCategory != 'outdoor')){
//code goes here
}