JavaScript命名约定

时间:2009-05-28 14:28:04

标签: javascript naming-conventions

我知道有很多争议(可能没有争议,但至少是争论)关于哪种命名约定最适合JavaScript。

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

我会对此有自己的想法,因为我没有长时间使用JS(几年,只有),我只是请求创建一个带有命名约定的文档,用于我们的工作中的项目。所以我一直在寻找(google-ing),并且有很多不同的意见。

我在JS上阅读的书籍本身也使用不同的命名约定,但他们都同意一点:“找到适合你的东西,并坚持下去。”但是现在我已经阅读了这么多,我发现我比其他一些方法更喜欢我现在习惯的方法。

6 个答案:

答案 0 :(得分:196)

我关注Douglas Crockford's code conventions获取javascript。我还使用他的JSLint工具来验证遵循这些约定。

答案 1 :(得分:157)

正如杰夫所说,Crockford says是好的。

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

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

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

答案 2 :(得分:104)

您可以按照Google JavaScript Style Guide

进行操作

一般情况下,使用functionNamesLikeThis,variableNamesLikeThis,ClassNamesLikeThis,EnumNamesLikeThis,methodNamesLikeThis,和SYMBOLIC_CONSTANTS_LIKE_THIS。

编辑:查看JavaScript Style Guides And Beautifiers的精彩集合。

答案 3 :(得分:9)

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

define(['Lightbox'],function(Lightbox) {
  var myLightbox = new Lightbox() // 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
})

答案 4 :(得分:6)

我认为除了一些语法限制之外;命名约定推理与语言无关。我的意思是,支持c_style_functions和JavaLikeCamelCase的论据同样可以使用相反的方式,只是语言用户倾向于遵循语言作者。

话虽如此,我认为大多数图书馆都倾向于大致遵循Java的CamelCase的简化。我发现Douglas Crockford advices对我来说很有品味。

答案 5 :(得分:2)

这是一个个人问题,可能取决于你的工作方式。有些人喜欢将变量类型放在变量的开头,比如“str_message”。有些人喜欢在他们的单词之间使用下划线(“my_message”),而其他人喜欢用大写字母(“myMessage”)分隔它们。

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

简而言之:根据我的说法,英语,低级,组织良好的变量和函数名称是可取的。这些名字应该描述它们的存在而不是简短。