编写单行if语句的最佳方式
Best way to code a single line if statement
所以在过去的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
语句的方式有关。
- 在localhost Dev Box上测试JSONP请求的最佳方式
- 为react组件传递道具的最佳方式
- 让Webpack管理Quirky AMD定义的最佳方式
- 在承诺链中处理早期回报的最佳方式
- 在ng重复循环中显示条件内容的最佳方式是什么
- 在phonegap中为android调用onload函数的最佳方式
- 链接两个网页或网络应用程序的最佳方式
- 什么's是连接供应商js文件的最佳方式
- 什么's是在javascript中迭代项的最佳方式
- 在node.js中编写单元测试的最佳方式是什么
- 在页面上记录数据并实现pushstate()的最佳方式
- 使用AJAX在Rails中提交动态表单的最佳方式是什么
- 什么'这是加载jQuery的最佳方式
- 将大数组(字符串和类型数组的混合物)存储到blob或文件中/从blob或文件检索大数组的最佳方式
- 在网站上显示.mov作为加载屏幕的最佳方式
- 使用Angular存储用户以前是否选中过复选框,然后再调用它的最佳方式是什么
- 以角度渲染表中数据的最佳方式
- 删除集合中旧邮件/帖子的最佳方式
- 显示全屏Ajax加载程序的最佳方式
- PHP和JS中表单验证的最佳方式