多个条件与多个语句
Multiple conditions vs. multiple statements
这些代码示例在性能方面是否有差异?
if (this.game.physics.arcade.overlap(this.player, this.barels) && (this.game.time.now - this.srdicka.timecheck > this.srdicka.frequency) || (this.player.position.y > this.game.height + 100)) {
this.damage(1);
}
或
if (this.game.physics.arcade.overlap(this.player, this.barels) && (this.game.time.now - this.srdicka.timecheck > this.srdicka.frequency)) {
this.damage(1);
}
if (this.player.position.y > this.game.height + 100) {
this.damage(1);
}
我知道两者都很好,但我不确定哪个更好。
是的。在第一个版本中,这...
(this.player.position.y > this.game.height + 100)
。只有在以下情况下才会进行评估...
this.game.physics.arcade.overlap(this.player, this.barels) &&
(this.game.time.now - this.srdicka.timecheck > this.srdicka.frequency)
。评估为 false
.在第二个版本中,无论如何都会对其进行评估。因此,如果第二个示例中第二个if
中的表达式将很昂贵,则可能会产生重大差异。如评论中所述,您的两个示例之间的差异也会改变逻辑。在这种情况下,将第二个语句设为else if
将保留原始逻辑。
下面是一个示例,说明了性能和逻辑上的差异,以及直接影响和副作用。运行它并查看控制台。
我认为最好
将它们全部放在一个而不是一分为二。原因是你会点击一个if语句而不是两个。
我会对第一个进行更改,并将其格式化为以下格式以提高可读性:
if (this.game.physics.arcade.overlap(this.player, this.barels)
&& (this.game.time.now - this.srdicka.timecheck > this.srdicka.frequency)
|| (this.player.position.y > this.game.height + 100))
{
this.damage(1);
}
您不仅可以拆分可读性的条件,还可以拆分重用性,可维护性和可用性的条件:
if (overlap() && frequency() || position())
{
this.damage(1);
}
function frequency(){
return this.game.time.now - this.srdicka.timecheck > this.srdicka.frequency;
}
function overlap(){
return this.game.physics.arcade.overlap(this.player, this.barels);
}
function position(){
return this.player.position.y > this.game.height + 100;
}
如果您的编译器运行良好,就像现代浏览器中的任何编译器一样,您只需要关心性能的&&
和||
表示法。 ||
只会评估左侧,如果这是错误的,它将继续评估右侧。巧妙地使用这些。
相关文章:
- 这个条件语句的逻辑有问题
- 如何检查if/else语句中的随机条件
- 使用条件语句,使 jquery fadeIn/fadeOut 仅在视口 >= 480px 时才有效
- 照片滑块的条件语句
- 使用解析为javascript源的.php,如何使用条件语句将javascript代码封装在php括号之间
- KnockoutJS:为虚拟元素使用嵌套的条件if语句
- 在if语句注释的条件内指定变量的值
- Javascript/C# - 满足语句条件时的确认对话框
- 如何将窗口[VariableName]设置为if语句条件
- if 语句条件由 javascript 中 if 语句内的内容触发
- if 语句条件逻辑
- 函数声明,就像语句条件一样
- 如何减少“如果语句”条件?[减少 if 语句中的条件]
- if语句条件检查!= "undefined"失败
- If语句条件满足,但内容未执行
- AngularJS在ng-repeat语句中的if语句条件
- 变量中用作if语句条件的字符串
- Javascript如果语句条件不满足
- if 语句 - 条件评估时间(Javascript)
- 数组中指定的 if 语句条件