Javascript 文档注释

发布时间 2023-08-23 16:13:07作者: OrzMiku

在JavaScript中,通常使用JSDoc格式的注释,以/**开始,以*/结束。

/**
 * 加法函数
 * @param {Number} a
 * @param {Number} b
 * @returns Number
 */
function add(a, b) {
  return a + b;
}

使用文档注释的好处就是,提高代码的可读性,更重要的是IDE可以识别这种注释,会有提示。

下面来介绍具体的一些使用方法。

可选参数

/**
 * @param {Number?} index 
 */

/**
 * @param {?Number} index 
 */

/**
 * @param {Number=} index 
 */

任意参数类型

/**
 * @param {*} index 
 */

/**
 * @param {Any} index 
 */

多种参数类型

/**
 * @param {Number|String} index 
 */

描述函数的参数和返回值:

/**
 * 计算两个数字的和。
 *
 * @param {number} a - 第一个数字
 * @param {number} b - 第二个数字
 * @returns {number} 两个数字的和
 */
function add(a, b) {
    return a + b;
}

描述函数的副作用和异常

/**
 * 向控制台输出一条消息。
 *
 * @param {string} message - 要输出的消息
 * @throws {Error} 如果消息为空则抛出错误
 */
function logMessage(message) {
    if (!message) {
        throw new Error("消息不能为空");
    }
    console.log(message);
}

描述对象的属性

/**
 * 表示一个人的对象。
 *
 * @typedef {Object} Person
 * @property {string} name - 姓名
 * @property {number} age - 年龄
 */

/**
 * @type {Person}
 */
const person = {
    name: "Alice",
    age: 30
};

描述类及其成员

/**
 * 表示一个汽车类。
 *
 * @class
 */
class Car {
    /**
     * 创建一个汽车实例。
     *
     * @constructor
     * @param {string} make - 制造商
     * @param {string} model - 型号
     */
    constructor(make, model) {
        this.make = make;
        this.model = model;
    }
    
    /**
     * 获取完整的车辆信息。
     *
     * @returns {string} 车辆信息字符串
     */
    getFullInfo() {
        return `${this.make} ${this.model}`;
    }
}

描述命名空间或模块

/**
 * 一个用于数学计算的工具模块。
 *
 * @namespace
 */
const MathUtils = {
    /**
     * 计算两个数字的乘积。
     *
     * @memberof MathUtils
     * @param {number} a - 第一个数字
     * @param {number} b - 第二个数字
     * @returns {number} 两个数字的乘积
     */
    multiply(a, b) {
        return a * b;
    }
};

描述回调函数

/**
 * 从数组中过滤出满足条件的元素。
 *
 * @param {Array} array - 待过滤的数组
 * @param {function(element: *, index: number): boolean} callback - 过滤条件回调
 * @returns {Array} 过滤后的数组
 */
function filterArray(array, callback) {
    return array.filter(callback);
}

常用标签

标签 用法与示例 含义和说明
@param @param {类型} 参数名 - 参数说明 描述函数参数的类型和含义。
@returns @returns {类型} 返回值说明 描述函数的返回值类型和含义。
@throws @throws {类型} 错误说明 描述函数可能抛出的异常类型和含义。
@typedef @typedef {类型} 别名 定义一个类型别名,通常用于描述对象、类或函数的返回类型。
@class @class 标识一个类的开始。
@constructor @constructor 描述类的构造函数。
@property @property {类型} 属性名 - 属性说明 描述对象或类的属性,包括类型和含义。
@namespace @namespace 标识一个命名空间或模块的开始。
@enum @enum {类型} 枚举名 - 枚举说明 描述一个枚举类型,包括枚举值和含义。
@callback @callback {类型} 回调名 - 回调说明 描述一个回调函数类型。
@private @private 标识注释的内容为私有成员,通常用于指定只在内部使用的部分。
@public @public 标识注释的内容为公共成员,通常用于指定可以从外部访问的部分。
@protected @protected 标识注释的内容为受保护成员,通常用于指定只允许派生类或子类访问的部分。
@inheritdoc @inheritdoc 表示继承自父类或接口的文档注释,用于减少重复注释。
@example @example 代码示例 提供一个代码示例,说明如何使用函数或方法。
@description @description 描述内容 提供更详细的描述文本,用于补充其他标签无法涵盖的内容。
@deprecated @deprecated 原因 标识被弃用的函数、属性或类,同时提供弃用的原因。
@ignore @ignore 忽略注释的内容,使其不会被文档生成工具处理。