-3

所以在过去的 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 处理。

4

4 回答 4

3

看看一些 jsperf 测试:

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

于 2013-02-12T14:54:52.977 回答
1

您的速记可以缩短:

代替:

(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)();

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

让你的代码可读。如果你必须在一年内恢复你的代码,你会很高兴的。

于 2013-02-12T14:46:03.250 回答
0

我通常对将每个花括号放在单独的行中而感到恼火,而且我不喜欢结束花括号之后有什么东西。此外,我不喜欢根本不使用它们。

顺便说一句,这将是我的。

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

当问题是关于三元的时,我不得不说,我只在条件或结果中不涉及任何函数时才使用它。

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

我关心我的代码的可读性,这很重要,当您拥有包含数千行代码的文件时,看起来非常相似 - 如果代码不可读,则很难调试或升级代码。

于 2013-02-12T14:45:22.427 回答
0

如果您“真的”不关心可读性/可维护性,那么只需以感觉最舒适的方式编写即可。

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

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

if (expression) {
}

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

于 2013-02-12T14:48:21.357 回答