JavaScript注释规范
2024/8/1大约 3 分钟
JSDoc 是一个针对 JavaScript 的 API 文档生成器,它通过特定格式的注释来生成结构化的 API 文档。使用 JSDoc 可以帮助开发者更好地理解代码、提高代码可读性和可维护性。
注释基础
基础语法
JSDoc 使用以 /** 开始、以 */ 结束的块级注释:
/**
* 这里是注释内容
*/标签
JSDoc 使用各种特殊标记(以 @ 开头)来描述代码的不同方面。这些标记可以单独使用,也可以组合使用。
文件与元信息
@file
描述当前文件的用途和内容。
/**
* @file 文件描述
*/@author
描述作者信息。
/**
* @author 作者信息 <邮箱>
*/@license
描述许可证信息。
/**
* @license MIT
*/@version
描述版本信息。
/**
* @version 1.0.0
*/@copyright
描述版权信息。
/**
* @copyright 版权信息
*/@see
提供相关信息的引用链接。
/**
* @see 参考信息 {@link 参考信息链接}
*/@todo
标记待办事项或未来计划。
/**
* @todo 待办信息
*/@description
添加详细描述信息。
/**
* @description 注释描述
*/可见性与结构
@class
描述类信息。
/**
* 描述类信息
* @class
*/
class Person {}@private / @protected / @public
标记成员的可见性级别(无需与 TypeScript 配合也可用于文档生成)。
/** @private */
function internalHelper() {}
/** @protected */
class Base {
/** @protected */ method() {}
}
/** @public */
function exposed() {}@typedef 与 @property
定义结构化类型,方便在 @param、@returns 等标签中复用。
/**
* 用户信息
* @typedef {object} User
* @property {number} id 用户 ID
* @property {string} name 用户名
* @property {('admin'|'user')} role 角色
*/
/**
* 获取用户
* @returns {User} 用户对象
*/
function getUser() {
return { id: 1, name: 'Alice', role: 'admin' };
}类型与函数
@type
描述变量的类型信息。
/**
* 变量含义
* @type {类型}
*/
/**
* 一个字符或数字类型的变量
* @type {(string|number)}
*/
/**
* 类型为数字或空
* @type {(?number)}
*/
/**
* 类型为数字且不能为空
* @type {(!number)}
*/
/**
* 类型不做限制
* @type {*}
*/@function
明确标记一个函数。
/**
* @function 函数描述
*/参数、返回与错误
@param
描述函数参数信息。
/**
* @param {参数类型} 参数名称 参数描述
*/
/**
* @param {number} a 数字
* @param {number} b 数字
*/
function add(a, b) {}
/**
* @param {number} a 数字
* @param {number} [b=1] 数字, 默认值1
*/
function add(a, b) {}
/**
* @param {*} param 参数不做类型限制
*/
function add(param) {}@return
描述函数返回值信息(与 @returns 同义)。
/**
* 两个数字相加
* @param {number} a 数字
* @param {number} b 数字
* @return {number} a + b 的结果
*/
function add(a, b) {
return a + b;
}@returns
描述函数返回值信息(推荐使用 @returns)。
/**
* 计算两个数之和
* @param {number} a 第一个数
* @param {number} b 第二个数
* @returns {number} 相加结果
*/
function add(a, b) {
return a + b;
}@throws
描述函数可能抛出的异常类型与原因。
/**
* 解析 JSON 字符串
* @param {string} text JSON 文本
* @returns {object} 解析后的对象
* @throws {SyntaxError} 当文本不是合法 JSON 时抛出
*/
function parseJson(text) {
return JSON.parse(text);
}@async
标记函数为异步函数;通常与 @returns {Promise<类型>} 结合使用。
/**
* 获取数据
* @async
* @returns {Promise<string>} 服务端响应
*/
async function fetchData() {
return 'ok';
}示例
@example
提供代码使用示例。
/**
* 两个数字相加
* @param {number} a 数字
* @param {number} b 数字
* @return {number} a + b 的结果
*
* @example
* add(1, 2) // 3
*/
function add(a, b) {
return a + b;
}其他辅助
@deprecated
标记 API 已废弃,并可提供替代方案。
/**
* @deprecated 请改用 newApi()
*/
function oldApi() {}更新日志
2025/9/28 09:03
查看所有更新日志
38e56-于
