注释在代码编写过程中的重要性,写代码超过半年的就能深深的体会到。没有注释的代码都不是好代码。为了别人学习,同时为了自己以后对代码进行‘升级’,看看js/javascript代码注释规范与示例。来自:http://www.56.com/style/-doc-/v1/tpl/js_dev_spec/spec-comment.html

文件注释

文件注释位于文件的最前面,应包括文件的以下信息:概要说明及版本(必须)项目地址(开源组件必须)版权声明(必须)开源协议(开源组件必须)版本号(必须)修改时间(必须),以ISO格式表示(可使用Sublime Text的InsertDate插件插入)文件注释必须全部以英文字符表示,并存在于文件的开发版本与生产版本中。例如:

1
2
3
4
5
/*!
 *
jRaiser 2 Javascript Library
 *
waterfall - v1.0.0 (2013-03-15T14:55:51+0800)
 *
http://jraiser.org/ | Released under MIT license
 */
1
2
3
4
/*!
 *
kan.56.com - v1.1 (2013-03-08T15:30:32+0800)
 *
Copyright 2005-2013 56.com
 */

如果文件内包含了一些开源组件,则必须在文件注释中进行说明。例如:

1
2
3
4
5
6
7
/*!
 *
jRaiser 2 Javascript Library
 *
sizzle - v1.9.1 (2013-03-15T10:07:24+0800)
 *
http://jraiser.org/ | Released under MIT license
 *
 *
Include sizzle (http://sizzlejs.com/)
 */

普通注释

普通注释是为了帮助开发者和阅读者更好地理解程序,不会出现在API文档中。其中,单行注释以“//”开头;多行注释以“/*”开头,以“*/”结束。普通注释的使用需遵循以下规定。

  • 总是在单行注释符后留一个空格。例如:

1
//
this is comment
  • 总是在多行注释的结束符前留一个空格(使星号对齐)。例如:

1
2
3
/*
                             
 */
  • 不要把注释写在多行注释的开始符、结束符所在行。例如:

1
2
3
/*
start
                             
end
*/
1
2
3
4
/*
here
is line 1
here
is line 2
 */
  • 不要编写无意义的注释。例如:

1
2
//
初始化value变量为0
var value
= 0;
  • 如果某段代码有功能未实现,或者有待完善,必须添加“TODO”标记,“TODO”前后应留一个空格。例如:

1
2
3
4
//
TODO 未处理IE6-8的兼容性
function setOpacity(node,
val) {
    node.style.opacity
= val;
}

文档注释

文档注释将会以预定格式出现在API文档中。它以“/**”开头,以“*/”结束,其间的每一行均以“*”开头(均与开始符的第一个“*”对齐),且注释内容与“*”间留一个空格。例如:

1
2
3
/**
 *
comment
 */

文档注释必须包含一个或多个注释标签。

  • @module。声明模块,用法:

1
2
3
4
/**
 *
模块说明
 *
@module 模块名
 */

例如:

1
2
3
4
/**
 *
Core模块提供最基础、最核心的接口
 *
@module Core
 */
  • @class。声明类,用法:

1
2
3
4
5
/**
 *
类说明
 *
@class 类名
 *
@constructor
 */

@class必须搭配@constructor或@static使用,分别标记非静态类与静态类。

1
2
3
4
5
6
/**
 *
节点集合类
 *
@class NodeList
 *
@constructor
 *
@param {ArrayLike<Element>} nodes 初始化节点
 */
  • @method。声明函数或类方法,用法:

1
2
3
4
5
6
7
/**
 *
方法说明
 *
@method 方法名
 *
@for 所属类名
 *
@param {参数类型} 参数名 参数说明
 *
@return {返回值类型} 返回值说明
 */

没有指定@for时,表示此函数为全局或模块顶层函数。当函数为静态函数时,必须添加@static;当函数有参数时,必须使用@param;当函数有返回值时,必须使用@return。

1
2
3
4
5
6
7
/**
 *
返回当前集合中指定位置的元素
 *
@method
 *
@for NodeList
 *
@param {Number} [i=0] 位置下标。如果为负数,则从集合的最后一个元素开始倒数
 *
@return {Element} 指定元素
 */
  • @param。声明函数参数,必须与@method搭配使用。

  • 当参数出现以下情况时,使用对应的格式:

1
[参数名]
  • 参数有默认值:

1
[参数名=默认值]

@property。声明类属性,用法:

1
2
3
4
/**
 *
属性说明
 *
@property {属性类型} 属性名
 */

javascript注释规范的更多相关文章

  1. JavaScript 注释规范

    JavaScript 注释规范 总原则 As short as possible(如无必要,勿增注释).尽量提高代码本身的清晰性.可读性. As long as necessary(如有必要,尽量详尽 ...

  2. sublime注释插件与javascript注释规范

    前言 代码中注释是不可少的,即使是自己写的代码,过了一段时间之后再重看,如果没有注释记录的话,可能会想不到当初是这样实现的,尤其是在业务逻辑比较复杂的项目,注释变得尤为重要.怎么优雅的写有用的注释呢? ...

  3. Sublime Text3 插件:DocBlockr与javascript注释规范

    原:http://www.ithao123.cn/content-719950.html 1.引子 在写代码的时候,尤其是写脚本,最需要注释了.目前脚本.样式的注释格式都有一个已经成文的约定规范(这些 ...

  4. 【JavaScript 开发规范】

    Javascript 最佳实践http://sofish.de/1171http://sofish.de/1181 总是使用 ‘var’ √ 特性检测而非浏览器检测 √ 使用方括号记法 √ 使用&qu ...

  5. JavaScript语法规范

    推荐的JavaScript编码规范 阅读 247 评论 0 喜欢 0 作为前端开发人员,我相信每一个人都或多或少的用到原生的JavaScript,也正是因为用的人多,导致编码风格也是多种多样的,而不规 ...

  6. JavaScript编码规范指南

    前言 本文摘自Google JavaScript编码规范指南,截取了其中比较容易理解与遵循的点作为团队的JavaScript编码规范. JavaScript 语言规范 变量 声明变量必须加上 var  ...

  7. JavaScript编码规范[百度]

    JavaScript编码规范 1 前言   2 代码风格   2.1 文件   2.2 结构   2.2.1 缩进   2.2.2 空格   2.2.3 换行   2.2.4 语句   2.3 命名 ...

  8. JavaScript 代码规范

    所有的 JavaScript 项目适用同一种规范. JavaScript 代码规范 代码规范通常包括以下几个方面: 变量和函数的命名规则 空格,缩进,注释的使用规则. 其他常用规范-- 规范的代码可以 ...

  9. JavaScript 编码规范(中文/Airbnb公司版)

    Airbnb 是一家位于美国旧金山的公司,本文是其内部的 JavaScript编码规范,写得比较全面,在 Github 上有 16,686 + Star,3,080 + fork,前端开发人员可参考. ...

随机推荐

  1. C#基础、基础知识点(新人自我总结,开启java学习之路)

    从2016年12月29开班,开课到现在C#基础已经算是简答的学习了一点,一个为期两周的课程,或多或少对现在学的Java有着一定的帮助吧,我们先从软件入门来接触c#这门语言: 一.软件开发中的常用术语: ...

  2. Actor模型[转]

    原文链接:http://blog.jeoygin.org/archives/477 Actor这个模型由Carl Hewitt在1973年提出,Gul Agha在1986年发表技术报告“Actors: ...

  3. Python学习笔记——基础篇【第六周】——Subprocess模块

    执行系统命令 可以执行shell命令的相关模块和函数有: os.system os.spawn* os.popen*          --废弃 popen2.*           --废弃 com ...

  4. [Q]自定义保存位置及文件名

    以“DWG To PDF.pc3”打印为例: 说明:<DrawingDirectory> 当前图纸所在目录<DrawingFolderName> 当前图纸文件所在文件夹名称&l ...

  5. 梅特卡夫法则(Metcalfe's law)

    如果一个网络中有n个人,那么网络对于每个人的价值与网络中其他人的数量成正比,于是网络对于所有人的总价值与n*(n-1)成正比.

  6. Elasticsearch 快照和恢复

    摘要: 在Elasticsearch中的可以创建快照,它创建单个索引或整个群集到一个远程的存储库中.在以前的版本中,系统只支持共享存储的快照创建,最新的版本可以通过插件支持更多的方式.在执行快照操作前 ...

  7. 向多个会话窗口发送命令 -SecureCRT

    1.前提 一个服务可能部署在多台机器上,这时如果要查问题,最繁复的方法就是打开该服务的每个session,把命令在每一台机器上复制一下执行,找到相关的日志:还有一种方法就是一条命令同时向多个会话窗口发 ...

  8. 定时发布任务,在global.asax中获取文件的物理路径的方法

    如果要把一个相对路径或者虚拟路径映射道服务器的物理路径,通常会使用Server.MapPath()函数,比如将根目录下的html目录映射为物理路径:Server.MapPath("html& ...

  9. STM32普通定时器(TIM2-7)的时钟源

    STM32普通定时器(TIM2-7)的时钟源

  10. FD.io VPP 技术Neutron VNF vRouter 实现

    在OpenStack Neutron中主要有三种网络设备,路由器(Router),负载均衡器(LB)以及VPN,其中Router作为基础网络设备起到连接子网到子网.内网到外网的作用.不同子网之间的访问 ...