如何"properly"格式化js核心元素?

How to "properly" format js core elements?

我已经阅读了很多关于 JavaScript 格式化和规则等的文章。但我的问题是如何格式化核心 JavaScript 元素(即函数、数组和对象)

通常我使用以下函数:

function myFunction(argument1 , argument2 , optionalargument3) {
    optionalargument3 === undefined ? optionalargument3 : "default value";
    return optionalargument1;
}

或:

var myFunction = function(argument1 , argument2 , optionalargument3) {
    optionalargument3 === undefined ? optionalargument3 : "default value";
    return optionalargument1;
}

但这是有争议的。对于我使用的对象:

var Car = {
    model        : undefined
    make         : "Sudan"
    MPG          : 7.5
    highway-mpg  : 11.5
};

当然,这是非常有争议的,大多数人使用不同的方法。
对于 for 循环,我使用:

for(var i = 0; i < (array.length + 1); i++) {
    console.log(array[i]);
}

人们似乎也已经下放了在对象或函数之前在列表中写出全局的想法。

例如:

var winMessage = "You Win!";
var loseMessage = "Loser!";
var cash = 0;
var intrest = null;

function randomInteger(low , high) {
    return Math.floor((Math.random())*(high-low))+low
}
var Car = {
    model        : undefined
    make         : "Sudan"
    MPG          : 7.5
    highway-mpg  : 11.5
};

是否有任何普遍接受的或通用的 "proper" 方法来格式化您的 JavaScript 代码?

这主要取决于偏好,但在整个代码库中保持一致的风格很重要,特别是如果您在团队中工作以提高代码的可读性。

您可以定义自己的风格或采用现有的风格,例如 Google 风格指南 (https://google-styleguide.googlecode.com/svn/trunk/javascriptguide.xml), or Crockfords (http://javascript.crockford.com/code.html)。

JavaScript 具有自动分号插入,这意味着某些类型的格式可能导致代码无法按预期工作,例如以下解释器将忽略对象文字,因为它将插入return 关键字后的分号:

return
{
  name: "Foo"
};

在你的例子中

optionalargument3 === undefined ? optionalargument3 : "default value";

实际上没有做任何事情,因为没有赋值,但是处理默认参数的一种干净利落的方法是代替使用

arg = arg === undefined ? "default value" : arg;

您可以使用语义相同且更清晰的版本:

arg = arg || "default value";