注释在代码编写过程中的重要性,写代码超过半年的就能深深的体会到。没有注释的代码都不是好代码。为了别人学习,同时为了自己以后对代码进行‘升级’,看看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. 消息队列 RabbitMQ 与 Spring 整合使用

    一.什么是 RabbitMQ RabbitMQ 是实现 AMQP(高级消息队列协议)的消息中间件的一种,最初起源于金融系统,用于在分布式系统中存储转发消息,在易用性.扩展性.高可用性等方面表现不俗.消 ...

  2. Ajax.BeginForm无法调用 ajaxOptions的js函数

    使用ajax.beginForm无法调用ajaxOptions的js函数的原因,一般都是缺少以下2个JS文件: 1,Install-Package jQuery –version 1.10.22,In ...

  3. webstorm for mac 破解步骤

    第一步:Web storm下载--从官网下载就可以 第二步:下载 - Java for OS X 2015-001--https://support.apple.com/kb/DL1572?viewl ...

  4. java 生成二维码

    package com.sun.erwei; import java.awt.Graphics2D;import java.awt.geom.AffineTransform;import java.a ...

  5. X11 五子棋

    #include <X11/Xlib.h> #include <stdlib.h> #include <X11/keysym.h> #include <cst ...

  6. vue的测试(Vue.js devtool)

    1. 安装chrome插件:Vue.js devtools(https://chrome.google.com/webstore/detail/vuejs-devtools/nhdogjmejigli ...

  7. List集合分页显示

    package com.mshc.util; import java.util.Arrays; import java.util.Collections; import java.util.List; ...

  8. rune is alias of int32

    I think chendesheng's quote gets at the root cause best: Go uses a lot of signed values, not just fo ...

  9. 线段树解决leetcode307. Range Sum Query - Mutable

    在下面的图中,求[0,0]和[1,1]区间元素和, 对于[0,0] start =0 ,end = 0, 查到root = 4 [0-1]的节点,mid = 0, 此时mid > end-1,表 ...

  10. C++虚函数继承的bug

    闲来无事想测试一下:如果在派生类中重写基类的虚函数,那么允不允许改变虚函数的访问权限,结果颠覆了三观..... 基类Base,拥有public方法test(),test()为虚函数 派生类Derive ...