我知道关于哪种命名约定最适合JavaScript存在很多争议(也许不是争议,但至少是争论)。

你如何命名你的变量,函数,对象等等?

我将把我自己的想法放在这里,因为我做JavaScript的时间不长(只有几年),而且我刚刚收到一个请求,要求我创建一个带有命名约定的文档,用于我们工作中的项目。所以我一直在搜索,有很多不同的观点。

我读过的关于JavaScript的书籍本身也使用不同的命名约定,但它们都同意一点:“找到适合你的,并坚持下去。”但现在我读了这么多,我发现我喜欢一些其他的方法比我现在习惯的要好一点。


当前回答

正如杰夫所说,克罗克福德说的很好。

我遵循的唯一例外(并且已经看到广泛使用)是使用$varname表示jQuery(或任何库)对象。如。

var footer = document.getElementById('footer');

Var $footer = $('#footer');

其他回答

正如杰夫所说,克罗克福德说的很好。

我遵循的唯一例外(并且已经看到广泛使用)是使用$varname表示jQuery(或任何库)对象。如。

var footer = document.getElementById('footer');

Var $footer = $('#footer');

这是一个个人问题,可能取决于你的工作方式。

有些人喜欢把变量类型放在变量的开头,比如“str_message”。有些人喜欢在单词之间使用下划线(“my_message”),而另一些人喜欢用大写字母分隔它们(“myMessage”)。

我经常和其他人一起使用巨大的JavaScript库,所以函数和变量(除了函数内部的私有变量)必须以服务的名称开始,以避免冲突,如“guestbook_message”。

简而言之:英文,小写,组织良好的变量和函数名是我的首选。名字应该描述它们的存在,而不是简短。

我遵循Douglas Crockford的JavaScript代码约定。我还使用他的JSLint工具来验证遵循这些约定。

我想尝试的一个惯例是用'the'前缀命名静态模块。看看这个。当我使用别人的模块时,不容易看到我应该如何使用它。例如,

define(['Lightbox'],function(Lightbox) {
  var myLightbox = new Lightbox() // I am not sure whether this is a constructor (non-static) or not
  myLightbox.show('hello')
})

我正在考虑尝试一种约定,静态模块使用“the”来表示它们的预先存在。有人见过比这更好的方法吗?它看起来是这样的:

define(['theLightbox'],function(theLightbox) {
  theLightbox.show('hello') // Since I recognize the 'the' convention, I know it's static
})

你可以遵循谷歌JavaScript风格指南。

一般来说,使用函数nameslikethis(低驼峰大小写),变量lenameslikethis,类nameslikethis(高驼峰大小写),枚举nameslikethis,方法nameslikethis和SYMBOLIC_CONSTANTS_LIKE_THIS。

请参阅JavaScript样式指南和美化器的集合。