注释在代码编写过程中的重要性,写代码超过半年的就能深深的体会到。没有注释的代码都不是好代码。为了别人学习,同时为了自己以后对代码进行‘升级’,看看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. openstack私有云布署实践【11.2 计算nova - compute节点配置(办公网环境)】

    这里我只使用compute1节点配置为示例,其它节点的配置基本是一样的,只是声明的管理IP不同而已   计算节点 # yum install openstack-nova-compute sysfsu ...

  2. [NYLG-OJ] 77 开灯问题(白书例题)

    #include<stdio.h> int main() { int a[1010]={0}; //储存灯的开闭情况 int n,k,i,j; scanf("%d%d" ...

  3. 关于mac地址的一点感想

    因为怕mac地址冲突导致环路影响,所以修改了本地设备的mac地址.地址修改为 77:77:77:00:22:11, 结果导致 wlan0 下发不下来. 查看配置选项/etc/config/wirele ...

  4. linux 调整文件系统大小 LVM

    fuser -m /home umount /home lvreduce -L 150G /dev/mapper/centos-home lvextend -L +300G /dev/mapper/c ...

  5. 多标记学习--Learning from Multi-Label Data

    传统分类问题,即多类分类问题是,假设每个示例仅具有单个标记,且所有样本的标签类别数|L|大于1,然而,在很多现实世界的应用中,往往存在单个示例同时具有多重标记的情况. 而在多分类问题中,每个样本所含标 ...

  6. react学习笔记-02

    1.组件嵌套 React允许将代码封装成一个component,然后像html标签一样,插入网页中中. var HelloMessage = React.createClass({ render: f ...

  7. HDU 1517 A Multiplication Game 博弈

    题目大意:从1开始Stan与Ollie经行博弈,stan先手,每次将当前数乘上(2~9)间的任意数,最后一次操作后大于等于n的人获胜. 题目思路: 1-9 stan 胜 10-18 ollie胜 19 ...

  8. 小白学C++的小问题

    昨天开始学习C++,使用的visual studio 2012. 1命名要有意义,避免用a,b,c,尽量使用num,result等让人看见就能明白相关含义的名字 2要有一定的注释,注释和有意义的命名可 ...

  9. JSON lib 里JsonConfig详解

    一,setCycleDetectionStrategy 防止自包含 /** * 这里测试如果含有自包含的时候需要CycleDetectionStrategy */ public static void ...

  10. String中的==与Empty

    1.String中的==与Equals方法执行结果一样吗? 我们都知道对于引用类型"=="比较的是引用而不是具体的值,但c#中有一种神奇的叫做操作符重载的东西.官方对String类 ...