js 文档注释

在 JavaScript 中,文档注释(也叫 JSDoc 注释)是一种用于为代码提供结构化说明的注释方式。JSDoc 注释通常用于生成 API 文档、提高代码可读性,并为 IDE 提供智能提示。下面是如何在 JavaScript 中编写文档注释的基本指南。

基本语法

JSDoc 注释通常以 /** 开始,并以 */ 结束。每个注释块可以包含不同的标签(tag),用于描述函数、变量、类、参数等内容。

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

常见的 JSDoc 标签

  1. @param
    用于描述函数参数。它有两个部分:类型和参数名,以及对该参数的描述。
     

    /*** 设置用户的年龄* @param {number} age - 用户的年龄*/
    function setAge(age) {this.age = age;
    }
    
  2. @returns@return
    用于描述函数的返回值。它也有两个部分:返回值的类型和返回值的描述。
     
    /*** 获取用户的名字* @returns {string} 返回用户的名字*/
    function getName() {return this.name;
    }
    
  3. @type
    用于指定变量的类型。 
    /** @type {string} */
    let message = "Hello, World!";
    
  4. @description
    用于描述函数、类或方法的行为,可以是对某一功能的详细解释。
     
    /*** 这个函数会检查一个数是否为质数。* @param {number} num - 要检查的数字* @returns {boolean} 如果是质数返回 true,否则返回 false*/
    function isPrime(num) {if (num <= 1) return false;for (let i = 2; i < num; i++) {if (num % i === 0) return false;}return true;
    }
    
  5. @example
    用于提供一个或多个函数调用的示例。 
    /*** 计算两数的平均值* @param {number} a - 第一个数字* @param {number} b - 第二个数字* @returns {number} 两个数的平均值* @example* // 返回 4* average(2, 6);*/
    function average(a, b) {return (a + b) / 2;
    }
    
  6. @deprecated
    标记一个方法、属性或函数已被废弃,不推荐使用。 
    /*** @deprecated* 该方法已被弃用,请使用新的 `newMethod` 代替。*/
    function oldMethod() {// ...
    }
    
  7. @throws@exception
    用于描述函数可能抛出的异常。 
    /*** 将一个字符串转换为数字* @param {string} str - 要转换的字符串* @returns {number} 转换后的数字* @throws {Error} 如果输入不是有效的数字*/
    function parseNumber(str) {const num = parseFloat(str);if (isNaN(num)) {throw new Error("无效的数字格式");}return num;
    }
    

注释函数的完整示例 

/*** 计算一个数组的平均值* * @param {number[]} arr - 一个包含数字的数组* @returns {number} 返回数组的平均值* @throws {Error} 如果数组为空,抛出错误* * @example* // 返回 5* calculateAverage([3, 5, 7])*/
function calculateAverage(arr) {if (arr.length === 0) {throw new Error('数组不能为空');}const sum = arr.reduce((total, num) => total + num, 0);return sum / arr.length;
}

注释类和对象

对于类和对象,我们也可以使用 JSDoc 来提供更详细的描述。

类的注释
/*** 表示一个矩形* * @class*/
class Rectangle {/*** 创建一个矩形* * @param {number} width - 矩形的宽度* @param {number} height - 矩形的高度*/constructor(width, height) {this.width = width;this.height = height;}/*** 计算矩形的面积* @returns {number} 返回矩形的面积*/getArea() {return this.width * this.height;}
}

总结

JSDoc 是 JavaScript 开发中用于提高代码可维护性和可读性的一个重要工具,它不仅帮助开发者理解代码的功能,还能自动生成 API 文档。合理使用 JSDoc 可以使你的代码更加清晰、规范,尤其是在团队合作时非常有用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/65993.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JavaScript中Map与Object的区别

在JavaScript中&#xff0c;Map和Object是用于存储键值对数据的两种不同的数据结构&#xff08;Map是ES6新增的数据结构&#xff09;&#xff0c;它们在构造方式、键的类型以及原型继承等方面存在区别。 一、主要区别 1.构造方式 Map&#xff1a;Map只能通过构造函数new Map…

【开源社区openEuler实践】compass-ci

title: 走进 Compass-CI&#xff1a;持续集成与测试的智能领航员 date: ‘2024-12-30’ category: blog tags: Compass-CI持续集成自动化测试软件开发流程 sig: CICD archives: ‘2024-12’ author:way_back summary: Compass-CI 作为一款强大的持续集成与测试平台&#xff0c…

双目视觉:reprojectImageTo3D函数

前言 reprojectImageTo3D 是 OpenCV 中用于从视差图生成三维点云的函数。它的原理是利用视差图和相机的校准参数&#xff0c;通过三角测量法&#xff0c;计算每个像素对应的三维坐标。以下内容根据源码分析所写&#xff0c;觉得可以的话&#xff0c;点赞收藏哈&#xff01;&am…

pyspark执行group by操作

前情提要 在处理亿级别数据时&#xff0c;常常输入是hive表&#xff0c;因此需要在pypark流程中引入一些场景sql操作&#xff0c;其中group by就是比较常见的操作。 基础步骤 创建SparkSession&#xff1a;通过enableHiveSupport()方法启用Hive支持&#xff0c;确保能够访问…

Megatron - LM; DistBelief; Mesh - Tensorflow

DistBelief、Mesh - Tensorflow、Megatron - LM DistBelief、Mesh - Tensorflow、Megatron - LM 均是在深度学习模型并行训练领域发挥重要作用的框架或技术: DistBelief:是早期支持模型并行的深度神经网络框架之一,采用参数服务器架构实现计算节点之间的输出同步。在深度神…

Spring Boot(快速上手)

Spring Boot 零、环境配置 1. 创建项目 2. 热部署 添加依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><optional>true</optional> </dependency&…

30.Marshal.AllocHGlobal C#例子

Marshal.AllocHGlobal 这个代码为IntPtr分配非托管内存。当访问非托管代码时有时候会需要一个指向非托管内存的指针。因此需要对IntPtr分配非托管内存。分配的大小可以是8个字节。不够可以写更大。 用完要用Free释放内存&#xff0c;否则这个非托管内存不会被C#自动释放。 u…

TTL 传输中过期问题定位

问题&#xff1a; 工作环境中有一个acap的环境&#xff0c;ac的wan口ip是192.168.186.195/24&#xff0c;ac上lan上有vlan205&#xff0c;其ip子接口地址192.168.205.1/24&#xff0c;ac采用非nat模式&#xff0c;而是路由模式&#xff0c;在上级路由器上有192.168.205.0/24指向…

MySQL中distinct和group by去重的区别

MySQL中distinct和group by去重的区别 在MySQL中&#xff0c;我们经常需要对查询结果进行去重&#xff0c;而DISTINCT和GROUP BY是实现这一功能的两种常见方法。虽然它们在很多情况下可以互换使用&#xff0c;但它们之间还是存在一些差异的。接下来&#xff0c;我们将通过创建测…

AI 驱动研发模式升级,蓝凌软件探索效率提升之道

深圳市蓝凌软件股份有限公司&#xff08;以下简称蓝凌软件&#xff09;&#xff0c;自2001年成立以来&#xff0c;一直走在数智化办公领域的前沿。作为国家认定的高新技术企业、知识管理国家标准的参编者以及信创供应商10强之一&#xff0c;蓝凌软件始终以“让组织更智慧”为使…

GPU 进阶笔记(四):NVIDIA GH200 芯片、服务器及集群组网

大家读完觉得有意义记得关注和点赞&#xff01;&#xff01;&#xff01; 1 传统原厂 GPU 服务器&#xff1a;Intel/AMD x86 CPU NVIDIA GPU2 新一代原厂 GPU 服务器&#xff1a;NVIDIA CPU NVIDIA GPU 2.1 CPU 芯片&#xff1a;Grace (ARM)2.2 GPU 芯片&#xff1a;Hopper/B…

SpringMVC(二)原理

目录 一、配置Maven&#xff08;为了提升速度&#xff09; 二、流程&&原理 SpringMVC中心控制器 完整流程&#xff1a; 一、配置Maven&#xff08;为了提升速度&#xff09; 在SpringMVC&#xff08;一&#xff09;配置-CSDN博客的配置中&#xff0c;导入Maven会非…

jest使用__mocks__设置模拟函数不生效 解决方案

模拟文件 // __mocks__/axios.js const axios jest.fn(); axios.get jest.fn(); axios.get.mockResolvedValue({data: {undoList: [get data],}, }); export default axios; 测试文件 jest.mock(axios); import Axios from axios;test(mytest, () > {console.log("…

在K8S中,节点状态notReady如何排查?

在kubernetes集群中&#xff0c;当一个节点&#xff08;Node&#xff09;的状态变为NotReady时&#xff0c;意味着该节点可能无法运行Pod或不能正确相应kubernetes控制平面。排查NotReady节点通常涉及以下步骤&#xff1a; 1. 获取基本信息 使用kubectl命令行工具获取节点状态…

python3中推导式:列表推导式

一. 简介 python中的推导式&#xff0c;是一种简洁创建列表&#xff0c;字典&#xff0c;集合&#xff0c;元组等数据类型的方式。本文简单来学习一下&#xff0c;python中的列表推导式。 Python 支持各种数据结构的推导式&#xff1a;列表(list)推导式&#xff0c;字典(dict…

springboot集成qq邮箱服务

springboot集成qq邮箱服务 1.获取QQ邮箱授权码 1.1 登录QQ邮箱 1.2 开启SMTP服务 找到下图中的SMTP服务区域&#xff0c;如果当前账号未开启的话自己手动开启。 1.3 获取授权码 进入上图中的【管理服务】后&#xff1a;在【安全设置中生成授权码】,也可以直接点击【继续生成…

UE4.27 Android环境下获取手机电量

获取电量方法 使用的方法时FAndroidMisc::GetBatteryLevel(); 出现的问题 但是在电脑上编译时发现&#xff0c;会发现编译无法通过。 因为安卓环境下编译时&#xff0c;包含 #include "Android/AndroidPlatformMisc.h" 头文件是可以正常链接的&#xff0c;但在电…

解释dash中的layout = go.Layout( yaxis={domain: [0, 0.50]}, yaxis2={domain: [0.51

在 Dash 中&#xff0c;layout 是用来配置图表布局的重要对象&#xff0c;其中 go.Layout 是 Plotly 的布局类&#xff0c;用于设置图表的整体外观和属性。 您提供的代码片段是用来设置图表的 Y轴域&#xff08;domain&#xff09;范围 和 多Y轴布局 的。 代码解释 layout g…

Word2Vec解读

Word2Vec: 一种词向量的训练方法 简单地讲&#xff0c;Word2Vec是建模了一个单词预测的任务&#xff0c;通过这个任务来学习词向量。假设有这样一句话Pineapples are spiked and yellow&#xff0c;现在假设spiked这个单词被删掉了&#xff0c;现在要预测这个位置原本的单词是…

VBA批量插入图片到PPT,一页一图

Sub InsertPicturesIntoSlides()Dim pptApp As ObjectDim pptPres As ObjectDim pptSlide As ObjectDim strFolderPath As StringDim strFileName As StringDim i As Integer 设置图片文件夹路径strFolderPath "C:\您的图片文件夹路径\" 请替换为您的图片文件夹路径…