JSDoc
2020-08-15 本文已影响0人
扶不起的蝌蚪
编写JSDoc是为了增强代码的可读性,以及方便导出API文档。它的规范可参考JSDoc 3
@description
:可以在代码提示时显示被描述变量或者函数的描述信息。
如果在注释开头就写函数注释,那么description
可以忽略
/**
* Add two numbers.
* @param {number} a
* @param {number} b
* @returns {number}
*/
function add(a, b) {
return a + b;
}
通过使用@Description
标记,您可以将描述放在JSDoc注释的任何位置。
/**
* @param {number} a
* @param {number} b
* @returns {number}
* @description Add two numbers.
*/
function add(a, b) {
return a + b;
}
如果JSDoc
注释的开头同时有描述和@Description
标记提供的描述,则使用@Description
指定的描述将覆盖注释开头的描述。
@example
:可以提示代码示例。
- 记录示例
/**
* Solves equations of the form a * x = b
* @example
* // returns 2
* globalNS.method1(5, 10);
* @example
* // returns 3
* globalNS.method(5, 15);
* @returns {Number} Returns the value of x for the equation.
*/
globalNS.method1 = function (a, b) {
return b / a;
};
- 还可以在
@example
之后使用<caption></caption>
。
/**
* Solves equations of the form a * x = b
* @example <caption>Example usage of method1.</caption>
* // returns 2
* globalNS.method1(5, 10);
* @returns {Number} Returns the value of x for the equation.
*/
globalNS.method1 = function (a, b) {
return b / a;
};
@param
:描述一个函数的参数以及参数类型
- 基本数据类型
/**
* @param {string} somebody - Somebody's name.
*/
function sayHello(somebody) {
alert('Hello ' + somebody);
}
- 可选参数
/**
* @param {string} [somebody] - Somebody's name.
*/
function sayHello(somebody) {
if (!somebody) {
somebody = 'John Doe';
}
alert('Hello ' + somebody);
}
- 可选参数和默认值
/**
* @param {string} [somebody=John Doe] - Somebody's name.
*/
function sayHello(somebody= 'John Doe') {
alert('Hello ' + somebody);
}
- 允许一种类型或另一种类型(类型合并)
/**
* @param {(string|string[])} [somebody=John Doe] - Somebody's name, or an array of names.
*/
function sayHello(somebody= 'John Doe') {
if (Array.isArray(somebody)) {
somebody = somebody.join(', ');
}
alert('Hello ' + somebody);
}
- 任意类型
/**
* @param {*} somebody - Whatever you want.
*/
function sayHello(somebody) {
console.log('Hello ' + JSON.stringify(somebody));
}
- 剩余参数
/**
* Returns the sum of all numbers passed to the function.
* @param {...number} num - A positive or negative number.
*/
function sum(...num) {
var i = 0, n = num.length, t = 0;
for (; i < n; i++) {
t += num[i];
}
return t;
}
- 回调函数
/**
* This callback type is called `requestCallback` and is displayed as a global symbol.
*
* @callback requestCallback
* @param {number} responseCode
* @param {string} responseMessage
*/
/**
* Does something asynchronously and executes the callback on completion.
* @param {requestCallback} cb - The callback that handles the response.
*/
function doSomethingAsynchronously(cb) {
// code
};
@returns
:标记记录函数返回的值
- 具有类型和描述的返回值。
/**
* Returns the sum of a and b
* @param {number} a
* @param {number} b
* @returns {number} Sum of a and b
*/
function sum(a, b) {
return a + b;
}
- 具有多种类型的返回值
/**
* Returns the sum of a and b
* @param {number} a
* @param {number} b
* @param {boolean} retArr If set to true, the function will return an array
* @returns {(number|Array)} Sum of a and b or an array that contains a, b and the sum of a and b.
*/
function sum(a, b, retArr) {
if (retArr) {
return [a, b, a + b];
}
return a + b;
}
- promise
/**
* Returns the sum of a and b
* @param {number} a
* @param {number} b
* @returns {Promise} Promise object represents the sum of a and b
*/
function sumAsync(a, b) {
return new Promise(function(resolve, reject) {
resolve(a + b);
});
}