我知道有很多争议(可能没有争议,但至少是争论)关于哪种命名约定最适合JavaScript。
如何命名变量,函数,对象等?
我会对此有自己的想法,因为我没有长时间使用JS(几年,只有),我只是请求创建一个带有命名约定的文档,用于我们的工作中的项目。所以我一直在寻找(google-ing),并且有很多不同的意见。
我在JS上阅读的书籍本身也使用不同的命名约定,但他们都同意一点:“找到适合你的东西,并坚持下去。”但是现在我已经阅读了这么多,我发现我比其他一些方法更喜欢我现在习惯的方法。
答案 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”。
简而言之:根据我的说法,英语,低级,组织良好的变量和函数名称是可取的。这些名字应该描述它们的存在而不是简短。