在JavaScript中有正确的间距方式吗?

4
在一次初步的技术面试中,我被要求使用Javascript编写一个简单的计算器函数。我的代码还可以,但他评论了我的糟糕间距。我写的大致像这样:
 var calc = function(num1, num2, operand){       //function(...  VS function (...
      if(operand === 'add'){                     
           return num1 + num2;
      } else if(operand === 'multiply'){         // if(...
           return num1 * num2;                            
      } else if (operand === 'subtract'){        // if (... 
           return num1 - num2;
      } else {
           console.log("Not a valid operand");
      };
 };

我是一位刚开始学习JavaScript的初学者,希望学习并保持良好的编码习惯。我知道上面的函数会运行,不管我的空格是否不一致,但是在JavaScript控制循环中有没有正确的空格方式呢?

任何建议或编码示例都将有所帮助!谢谢!


你的括号周围的间距不一致,但我不会说它糟糕。我见过更糟糕的情况;足以让一个人从30步外就能看到。 - Jared Farrish
2
我本来会问你为什么没有使用 switch 而是用了 if/else 链。 - John Zwinck
JavaScript 没有“官方”的间距指南。不同的人可能会使用不同的样式。仅供参考,我使用 function (...} else if (...) { - alecbz
倒数第二个分号也是多余的。 - Jared Farrish
我看到你的风格和(有争议的)最常见的JavaScript风格之间有两个区别:1. 你不总是在单词_if_后面使用空格。 2. 你不在行末{字符前使用空格。 phenomnomnominal的答案巧合地建议了相同的更改。 - jahroy
我本可以嘲笑我的面试官从未听说过在线JavaScript美化器。然后,我会带着得意的微笑离开。 - Aadit M Shah
3个回答

8
他可能认为你的写作风格与他不同,所以觉得不好。
关于代码风格的良好资源是Google JavaScript Style Guide。该页面末尾的关键点说:
保持一致。 如果要编辑代码,请花几分钟时间查看周围的代码并确定其风格。如果他们在所有算术运算符周围使用空格,则您也应该这样做。如果他们的注释周围有小框框,请让您的注释也有小框框。拥有风格指南的重点在于拥有一个共同的编程词汇表,这样人们就可以专注于您说的内容,而不是如何说。我们在这里提供全局样式规则,以便人们知道词汇表,但本地样式也很重要。如果您添加到文件中的代码与其周围的现有代码差异很大,则读者在阅读时会被打乱节奏。请避免这种情况。

3
这只是一种观点问题。你的代码完全可接受 - 有些地方略微不一致,但仍然有效。我个人会像这样编写它:
var calc = function (num1, num2, operand) {
  if (operand === 'add') {
    return num1 + num2;
  } else if (operand === 'multiply') {
    return num1 * num2;                            
  } else if (operand === 'subtract') {
    return num1 - num2;
  } else {
    console.log("Not a valid operand");
  }
};

实际上我会使用switch语句,但无论如何...

以下是一些风格指南,你可能会觉得有用:

当然,这些都不是唯一正确的答案,但它们可以帮助保持你的代码整洁和可维护性。


1
从技术上讲,最后的 ; 是在关闭该变量函数语句。 - Jared Farrish

0

这个对你有用吗?

var calc = function(num1, num2, operand){
   return ( new Function( 'return ' + num1 + operand + num2 ) )();
};

正如其他人已经提到的,在JavaScript中没有像Python或F#那样的空格规则。他可能因为以下原因而说了错误的间距

  1. 如果你使用 if() else(),每个比较值都必须从内存中检索,如果使用switch,则这个值将被检索一次并完成工作。当然,在这种情况下,Switch更好。

  2. 在这种情况下,也不必使用switch。你可以像我在答案中提到的那样使用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接