编写单行if语句的最佳方式

Best way to code a single line if statement

本文关键字:最佳 方式 语句 if 单行      更新时间:2023-09-26

所以在过去的5年里,我一直在用JavaScript写作,并且都是自学成才的。当我遇到越来越多的程序员时,我遇到了一个问题。我发现我并不总是以最好的方式编码。

我一直在试图找出用JS编写单行if语句的最佳方法。我不关心可读性,而且这个项目不是开源的,所以我不担心其他人添加到它中

我通常如何写我的报表

condition = true;
if (condition)
  runFunction();
else
  runSecondFunction();

但我发现,每个人都一直告诉我要使用括号。我一直在写这篇文章,因为他们总是加上下面一行"这让阅读更容易"

condition = true;
if (condition) {
  runFunction();
}else{
  runSecondFunction();
}

最后,有人最后对我说,我应该写if语句,以更紧密地匹配我在C#中写的语句,这看起来像下面的

condition = true;
if (condition) 
{
  runFunction();
}
else
{
  runSecondFunction();
}

当然还有简写,但我通常只使用它来切换像这样的变量

condition = true;
(condition) ? condition = false : condition = true;

但是,使用正则if语句的简写会更好吗。例如:

condition = true;
(condition) ? runFunction() : runSecondFunction();

所以问题是

在编写一行JavaScript的众多方法中,这是将其编程为运行速度最快的最佳方法。我不在乎可读性,所以请不要说建议这样或那样写,因为它更容易阅读。还请举例说明为什么一种方式比另一种方式更快或更慢。

要清楚

这并不是说我不在乎可读性,而是这些if语句对我来说都不难阅读,它们在所有版本中都对我有意义。所以,你们中的一些人可能认为很难阅读的东西,我可能不会。这就是我的下一点,因为这些对我来说都不难阅读,也许我应该用JS处理它的最佳方式来写它

例如,我发现JS运行需要更长的时间

counter++;

然后进行

counter = counter + 1;

所以最后要明确的是,我读这些都没有问题,我只想知道哪一个最适合JS处理。

看看一些jsperf测试:

  • 支架与无支架
  • 三元vs if
  • if与boolean

它们似乎都相对相等(除了布尔版本在我刚刚运行的测试中较慢之外),所以我会选择你最喜欢的外观。

您的简写可以缩短:

代替:

(condition) ? condition = false : condition = true;

尝试:

condition = condition ? false : true;
var a = condition ? 'conditionTrueValue' : 'conditionFalseValue';
// Or in this case, since you're just toggling the boolean:
condition = !condition;

代替:

(condition) ? runFunction() : runSecondFunction();

你可以这样保存几个字符:

(condition ? runFunction : runSecondFunction)();

现在,这方面的性能差异(如果有的话)将是微不足道的。

使代码可读。如果你必须在一年后回到你的代码,你会很高兴你做到了。

我通常会因为把每个花括号都放在单独的一行而感到恼火,我不喜欢结尾的花括号后面有东西。此外,我不喜欢它们根本不用的时候。

顺便说一句,我会的。

condition = true;
if (condition) {
  runFunction();
}
else {
  runSecondFunction();
}

当问题是关于terniary时,我不得不说,只有当条件或结果中并没有涉及函数时,我才会使用它。

result = (number == 521 : "equal to 521" : "some other number");

我关心我的代码的可读性,这很重要,当你有一个包含数千行代码的文件时,它看起来很相似——如果代码不可读,很难调试或升级代码。

如果你真的不关心可读性/可维护性,那么就用感觉最舒服的方式来写吧。

根据我的编程经验,人们建议使用大括号的原因实际上是为了可维护性,当有人必须为if语句添加一块代码时,一个论点是,如果你只键入一次,当你需要一块代码而不是一条语句时,你就不必记得插入它了。

我建议使用下面的表格,因为Javascript有一些大括号的怪癖(来自内存),我相信这与闭包/函数的概念有关)某些代码不会运行。当我调试我的坏代码,然后读到它时,我感到很惊讶,但那是很久以前的事了。

if (expression) {
}

至于性能因素,我认为这更多地与正在执行的逻辑和代码有关,而不是与编写if语句的方式有关。