Javascript 编写单行if语句的最佳方法

Javascript 编写单行if语句的最佳方法,javascript,Javascript,因此,在过去的5年里,我一直在用JavaScript写作,而且我都是自学成才的。当我遇到越来越多的程序员时,我遇到了一个问题。我发现我并不总是以最好的方式编写代码 我一直在试图找出用JS编写单行if语句的最佳方法。我不关心可读性,项目也不是开源的,所以我不担心其他人会添加到项目中 我通常如何写我的陈述 condition = true; if (condition) runFunction(); else runSecondFunction(); 但我发现每个人都在告诉我要用括号。我一

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

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

我通常如何写我的陈述

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的方法中,哪一种是编程使其运行最快的最佳方法。我不关心可读性,所以请不要说建议这样或那样写,因为这样更容易阅读。请举例说明为什么一种方式比另一种快或慢

说清楚 这并不是说我不关心可读性,而是如果这些语句对我来说很难阅读,那么它们在所有版本中对我来说都没有意义。所以你们中有些人可能会觉得难以阅读,我可能不会。这就是我要说的下一点,因为这些都不难读,也许我应该用JS最好的方式来写

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

counter++;
然后就有了

counter = counter + 1;

所以最后要明确的是,我在阅读这些内容时没有任何问题,我只想知道哪一个最适合JS处理。

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

顺便说一句,这对我很有帮助

condition = true;
if (condition) {
  runFunction();
}
else {
  runSecondFunction();
}
当问题是关于三元数时,我必须说,我只在条件或结果中不涉及函数时才使用它

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

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

你的速记可以缩短:

而不是:

(condition) ? condition = false : condition = true;
(condition) ? runFunction() : runSecondFunction();
尝试:

而不是:

(condition) ? condition = false : condition = true;
(condition) ? runFunction() : runSecondFunction();
您可以保存以下几个字符:

(condition ? runFunction : runSecondFunction)();
现在,这方面的性能差异(如果有的话)将是微不足道的


使代码可读。如果您必须在一年内回到您的代码中,您会很高兴您做到了这一点。

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

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

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

if (expression) {
}

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

看看一些jsperf测试:


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

“我不关心可读性”这一观点是错误的。首先关注可读性和可维护性。3年多以后,当他们试图调试一些微妙的行为或bug时,没有人会在意愚蠢的语法技巧。任何优化都将是微不足道的。可读性是非常重要的。仅仅因为一个项目不是开源的,就没有理由编写糟糕的、不可读的代码。即使你在这个项目上一直工作到死,你也不会总是准确地记得你曾经写过的每一条if语句都做了什么。同意其他人的观点,你必须关注可读性,并且拥有比其他任何东西都更易于维护的代码。当他回到你写的代码时,你未来的自我会因此而被你激怒。如果您非常担心优化问题,那么有很多从JavaScript到JavaScript的编译器可以解决这个问题。但是源代码必须是可读的:它是你将拥有的更可靠的文档。不是我不关心可读性,而是我展示的方法没有一种对我来说很难阅读,它们对我来说都是有意义的。我读这些书从来没有遇到过问题。所以问题变成了什么才是最好的写作方式。谢谢你,这正是我想要的答案!我冒昧地去了。我对结果感到相当惊讶。谢谢你把这些放在一起。这正是我要找的。