当前位置: 首页 > news >正文

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 可以使你的代码更加清晰、规范,尤其是在团队合作时非常有用。

相关文章:

js 文档注释

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

chatgpt model spec 2024

概述 这是模型规范的初稿&#xff0c;该文档规定了我们在OpenAI API和ChatGPT中的模型的期望行为。它包括一组核心目标&#xff0c;以及关于如何处理冲突目标或指令的指导。 我们打算将模型规范作为研究人员和数据标注者创建数据的指南&#xff0c;这是一种称为从人类反馈中进…...

路由技术在网络中的作用及特点

作用&#xff1a;路径选择&#xff1a;在复杂的网络拓扑结构中&#xff0c;路由技术能够根据网络的当前状态和目标地址&#xff0c;为数据报文选择一条最佳的传输路径&#xff0c;确保数据能够快速、准确地到达目的地。例如&#xff0c;在互联网中&#xff0c;当用户访问一个网…...

No.1十六届蓝桥杯备战|第一个C++程序|cin和cout|命名空间

第一个C程序 基础程序 使用DevC5.4.0 写一个C程序 在屏幕上打印hello world #include <iostream> using namespace std;int main() {cout << "hello world" << endl;return 0; } 运行这个C程序 F9->编译 F10->运行 F11->编译运行 mai…...

vim 按下esc后取消高亮

配置 ideavimrc文件 " 按下 Esc 键时自动取消高亮 " 在普通模式下按下 Esc 键取消高亮 nnoremap <Esc> :nohlsearch<CR> " 在插入模式下按下 Esc 键取消高亮 inoremap <Esc> <Esc>:nohlsearch<CR>" 额外&#xff1a;当退出…...

JS-判断字段值是否为空

1.js方法 /*** Description: 判断给定值是否为空* param {any} value 需要检查的值* return {boolean} 如果值为空&#xff0c;返回 true&#xff1b;否则返回 false */ export function isEmpty(value) {// 检查是否为 null 或 undefinedif (value null || value undefined…...

STM32-笔记22-sg90舵机

一、接线 二、实验实现 动手让 SG90 每秒转动一下&#xff0c;0 -> 20 -> 40 -> 100 -> 180 如此循环。 舵机接A6 复制18-呼吸灯&#xff0c;重命名24-sg90舵机 把PWM重命名sg90 打开项目文件 在魔术棒和品上把PWM都去掉&#xff0c;加载sg90文件夹 加载之后…...

智能工厂的设计软件 应用场景的一个例子:为AI聊天工具添加一个知识系统 之10 方案再探之1:特定于领域的模板 之1 随想交流

前面的项目再次不能继续。不得已再一次重新建了这个项目&#xff0c;并以当前修改版本的项目文件为附件开始了今天的沟通。所以 标明是“方案再探” 在新建这个项目的同时&#xff0c;就将项目文件作为附件添加进去&#xff0c;然后开始。 文件链接&#xff1a;智能工厂的设计…...

国内Ubuntu环境Docker部署Stable Diffusion入坑记录

国内Ubuntu环境Docker部署Stable Diffusion入坑记录 本文旨在记录使用dockerpython进行部署 stable-diffusion-webui 项目时遇到的一些问题&#xff0c;以及解决方案&#xff0c;原项目地址: https://github.com/AUTOMATIC1111/stable-diffusion-webui 问题一览&#xff1a; …...

速盾:服务器CDN加速解析的好处有哪些呢?

随着互联网应用的普及&#xff0c;越来越多的企业开始关注如何提升网站的访问速度和用户体验。为了实现这一目标&#xff0c;许多企业选择使用CDN&#xff08;内容分发网络&#xff09;来加速网站的内容分发。CDN通过在全球范围内分布多个节点&#xff0c;将内容缓存到离用户最…...

【sql】CAST(GROUP_CONCAT())实现一对多对象json输出

数据库&#xff1a;mysql 5.7版本以上 问题&#xff1a;一对多数据&#xff0c;实现输出一条数据&#xff0c;并将多条数据转换成json对象输出&#xff0c;可以实现一对多个字段。 项目中关系较为复杂&#xff0c;以下简化数据关系如下&#xff1a; t1是数据表&#xff0c;t…...

[创业之路-221]:企业的责任中心:收入中心、利润中心、成本中心、费用中心、投资中心

目录 一、大部分企业责任中心定义 投资中心&#xff1a;战略决策部 利润中心&#xff1a;事业部 收入中心&#xff1a;进账 成本中心&#xff1a;成本 费用中心&#xff1a;消耗 二、华为对责任中心定义 投资中心 利润中心&#xff08;事业部&#xff1a;BU&#xff0…...

人工智能之基于阿里云图像人脸融合部署

人工智能之基于阿里云图像人脸融合部署 需求描述 基于阿里云搭建图像人脸融合模型&#xff0c;模型名称&#xff1a;iic/cv_unet-image-face-fusion_damo使用上述模型输出人脸融合照片 模型路径&#xff1a;人脸融合 业务实现 阿里云配置 阿里云配置如下&#xff1a; SD…...

GXUOJ-算法-补题:22级《算法设计与分析》第一次课堂练习

2.最大子数组和 问题描述 代码解答 #include<bits/stdc.h> using namespace std; const int N1005; int sum,n,a[N]; int res-1;int result(){for(int i0;i<n;i){if(sum<0) suma[i];else{suma[i];resmax(res,sum);}}return res; } int main(){cin>>n;for(i…...

Redisson 分布式锁获取tryLock和lock的区别

问题 boolean isLock lock.tryLock(10, 30, TimeUnit.SECONDS); boolean isLock lock.lock(30, TimeUnit.SECONDS); boolean isLock lock.lock(); 三者的区别&#xff1f;&#xff1f; 这三个方法都是用于获取 Redisson 分布式锁的&#xff0c;但它们在获取锁的方式和行为…...

mysql及其兼容语法数据库对于注释的特殊要求

我司大部分数据库使用MS-SQL&#xff0c;其中使用大量–开头的行注释&#xff0c;由于业务需要&#xff0c;切换到了Starrocks数据库&#xff08;兼容mysql语法&#xff09;后发现使用with开头子查询的时候&#xff0c;大量报错&#xff0c;单独执行内部的子查询又正常&#xf…...

开源模型应用落地-工具使用篇-Spring AI(七)

一、前言 在AI大模型百花齐放的时代&#xff0c;很多人都对新兴技术充满了热情&#xff0c;都想尝试一下。但是&#xff0c;实际上要入门AI技术的门槛非常高。除了需要高端设备&#xff0c;还需要面临复杂的部署和安装过程&#xff0c;这让很多人望而却步。不过&#xff0c;随…...

多输入多输出 | Matlab实现WOA-CNN鲸鱼算法优化卷积神经网络多输入多输出预测

多输入多输出 | Matlab实现WOA-CNN鲸鱼算法优化卷积神经网络多输入多输出预测 目录 多输入多输出 | Matlab实现WOA-CNN鲸鱼算法优化卷积神经网络多输入多输出预测预测效果基本介绍模型背景程序设计参考资料 预测效果 基本介绍 Matlab实现WOA-CNN鲸鱼算法优化卷积神经网络多输入…...

【golang学习之旅】使用VScode安装配置Go开发环境

1. 下载并安装Go 1.1 下载地址1.2 选择版本并下载1.3 安装目录1.4 验证是否安装成功 2. 配置环境变量 2.1 配置步骤2.2 GO部分环境变量说明 3. 下载或更新 Vscode 3.1 下载地址3.2 安装步骤 4. 为Go开发配置VScode 1. 下载并安装Go 1.1 下载地址 https://studygolang.com/dl…...

HarmonyOS Next“说书人”项目 单机版 实践案例

前段时间开发了一个软件&#xff0c;取名为“说书人”&#xff0c;后由于备案暂时没有通过&#xff0c;于是删除了联网功能&#xff0c;重新做了一个单机版&#xff0c;这里对于单机版的开发实践案例进行一个发出&#xff0c;希望能帮助到大家 文章最后给出了AtomGit仓库地址 p…...

Vue3 + ElementPlus动态合并数据相同的单元格(超级详细版)

最近的新项目有个需求需要合并单元列表。ElementPlus 的 Table 提供了合并行或列的方法&#xff0c;可以参考一下https://element-plus.org/zh-CN/component/table.html 但项目中&#xff0c;后台数据返回格式和指定合并是动态且没有规律的&#xff0c;Element 的示例过于简单&…...

前端开发中依赖包有问题怎么办

在前端开发中&#xff0c;如果你发现某个依赖包存在问题&#xff0c;可以考虑以下步骤来解决&#xff1a; 一、简单方案 1. 检查问题来源&#xff1a; 确认问题是否由依赖包引起&#xff0c;而不是你的代码或其他配置问题。查看错误信息、文档和相关的 GitHub issue&#xf…...

Oracle exp和imp命令导出导入dmp文件

目录 一. 安装 instantclient-tools 工具包二. exp 命令导出数据三. imp 命令导入数据四. expdp 和 impdp 命令 一. 安装 instantclient-tools 工具包 ⏹官方网站 https://www.oracle.com/cn/database/technologies/instant-client/linux-x86-64-downloads.html ⏹因为我们在…...

阿里云人工智能工程师ACA认证免费课程学习笔记

阿里云人工智能工程师ACA认证免费课程学习笔记 0. 引言第1章&#xff1a;人工智能基础课时1&#xff1a;人工智能概述课时2&#xff1a;人工智能产业结构课时3&#xff1a;人工智能项目开发的基本流程 第2章&#xff1a;机器学习PAI平台基础第3章&#xff1a;数据处理基础课时8…...

单片机库函数-io输出操作

1、需要使用模块 使用库函数做跑马灯&#xff0c;要用到: misc.h misc.c 时钟模块&#xff1a; stm32f10x_rcc.h stm32f10x_rcc.c gpio模块&#xff1a; 头文件:stm32f10x_gpio.h 源文件:stm32f10x_gpio.c 2、库函数 2.1、初始化GPIO void GPIO_Init(GPIO_TypeDef* …...

SpringAI从入门到熟练

学习SpringAI的记录情况 文章目录 前言 因公司需要故而学习SpringAI文档&#xff0c;故将自己所见所想写成文章&#xff0c;供大佬们参考 主要是为什么这么写呢&#xff0c;为何不抽出来呢&#xff0c;还是希望可以用的时候更加方便一点&#xff0c;如果大家有需求可以自行去…...

Javascript-web API-day04

文章目录 01-实例化日期对象02-常见的日期对象方法03-年月日案例04-年月日简化05-得到时间戳06-倒计时07-关闭节点08-子节点09-增加节点10-克隆节点11-删除节点12-m端时间13-(swiper插件的使用)移动端轮播图游乐园项目 学成在线重构 01-实例化日期对象 <!DOCTYPE html> …...

等待事件 ‘latch: row cache objects‘ 说明及解决方法

早上刚来的时候&#xff0c;收到zabbix 数据库连接数增长的告警&#xff0c;同时应用负责人也说查询很慢、很卡 查看该时间段 最多的等待事件 SELECT event,COUNT(1) num FROM V$ACTIVE_SESSION_HISTORY A WHERE A.SAMPLE_TIME BETWEEN TO_DATE(2025-01-02 09:00:00, YYYY-M…...

Mac电脑python多版本环境安装与切换

我当前是python3.9.6环境&#xff0c;需要使用3.9.8环境&#xff0c;通过brew安装3.9.8版本&#xff0c;然后通过pyenv切换环境 步骤 1: 安装 pyenv brew install pyenv brew install pyenv-virtualenv 步骤 2: 安装 Python 3.9.8&#xff08;使用 pyenv 安装指定版本的 Pyth…...

MySQL 锁那些事

Q1 : MySQL有哪些锁,功能是什么,如何项目中使用?Q2 : 行锁是如何实现的?什么情况下会使用行锁?Q3 : 四种事务隔离形式的行锁有什么不一样?读未提交读提交可重复读串行 Q4 : MySQL 的读写都是怎样加锁的?Q5 : 需要注意什么? Q1 : MySQL有哪些锁,功能是什么,如何项目中使用…...

面试手撕笔记ML/DL

数据集 数据集的批处理迭代器 Deep-ML | Batch Iterator for Dataset 实现一个批量可迭代函数&#xff0c;该函数在numpy数组X和可选numpy数组y中进行采样。该函数应该生成指定大小的批量。如果提供了y&#xff0c;则该函数应生成&#xff08;X, y&#xff09;对的批次&#…...

WPF使用ContentControl控件实现区域导航,并使用Prism依赖注入优化

背景&#xff1a;使用ContentControl控件实现区域导航是有Mvvm框架的WPF都能使用的&#xff0c;不限于Prism 主要是将ContenControl控件的Content内容在ViewModel中切换成不同的用户控件 下面是MainViewModel&#xff1a; private object body;public object Body {get { retu…...

NineData 荣获年度“创新解决方案奖”

近日&#xff0c;国内知名 IT 垂直媒体 & 技术社区 IT168 再次启动“技术卓越奖”评选&#xff0c;由行业 CIO/CTO 大咖、技术专家及 IT 媒体多方联合评审&#xff0c;NineData 凭借技术性能和产品创新等方面表现出色&#xff0c;在数据库工具领域荣获“2024 年度创新解决方…...

Windows 11 系统中npm-cache优化

在 Windows 11 系统中&#xff0c;C:\Users\K\AppData\Local\npm-cache 文件夹是 npm&#xff08;Node Package Manager&#xff09; 用于缓存已下载的包的目录。缓存的存在可以加快包的安装速度&#xff0c;因为当再次安装相同的包时&#xff0c;npm 可以直接从缓存中获取&…...

【运维工具】Ansible一款好用的自动化工具

Ansible一款好用的自动化工具 概述一、基本概念与特点二、核心组件三、主要功能与应用场景四、优缺点 如何使用一、安装Ansible二、配置Ansible三、使用Ansible四、注意事项 Playbook语法详解一、YAML文件的基本结构二、Playbook的主要组成部分三、Playbook示例四、注意事项 概…...

4.Web安全——JavaScript基础

一、JavaScript是什么&#xff1f; JavaScript 是一种高级的、解释型的编程语言&#xff0c;广泛应用于网页开发和各种软件应用程序中。 二、为什么要学习JavaScript XSS&#xff08;跨站脚本攻击&#xff09;防范 XSS 是一种常见的 Web 安全漏洞&#xff0c;攻击者将恶意脚…...

mysql删除无用用户

1、删除不用的账户 (1) 查看当前已存在账户 mysql> select user,host,password from mysql.user; 或下面的命令 #mysql> sELECT DISTINCT CONCAT(User: ,user,,host,;) AS query FROM mysql.user; --------------------------------------- | query …...

2025元旦源码免费送

我们常常在当下感到时间慢&#xff0c;觉得未来遥远&#xff0c;但一旦回头看&#xff0c;时间已经悄然流逝。对于未来&#xff0c;尽管如此&#xff0c;也应该保持一种从容的态度&#xff0c;相信未来仍有许多可能性等待着我们。 免费获取源码。 更多内容敬请期待。如有需要可…...

静态库封装之ComFile类

ComFile.h /* author:EricsT data:20241024 version:V1.0 history:author data version contentEricsT 20241024 V1.0 新增ComFile类[common、FILE以及stream部分] */#pragma once#include <string> #include <fstream> using namespace std;class ComFile { publi…...

概率论与数理统计

概率论占比更多&#xff0c;三分之二左右 数理统计会少一些 事件之间的概率 ab互斥&#xff0c;不是ab独立 古典概型吃高中基础&#xff0c;考的不会很多 条件概率公式&#xff0c;要记 公式不要全记&#xff0c;很多有名称的公式是通过基础公式转换而来的 目的在于解决一…...

鸿蒙HarmonyOS开发:基于Swiper组件和自定义指示器实现多图片进度条轮播功能

文章目录 一、概述1、场景介绍2、技术选型 二、实现方案1、图片区域实现2、底部导航点设计3、手动切换 三、所有代码1、设置沉浸式2、外层Tabs效果3、ImageSwiper组件 四、效果展示 一、概述 在短视频平台上&#xff0c;经常可以见到多图片合集。它的特点是&#xff1a;由多张…...

django --递归查询评论

表数据 树状结构 action(methods(GET, ), detailFalse) def get_info_pinglun(self, request, *args, **kwargs) -> Response:根据评论id查所有回复params wenxian_pinglun_id --> 评论id;wenxian_pinglun_id self.request.GET.get(wenxian_pinglun_id)results se…...

kafka怎么保证顺序消费?

kafka怎么保证顺序消费&#xff1f; 1. 分区内的顺序保证2. 并发消费3. 实现顺序消费的策略4. 注意事项 kafka创建 topic 的时候没有指定分区数量&#xff0c;那么默认只会有一个分区。如果你想要创建一个具有多个分区的 topic&#xff0c;你可以在创建 topic 的命令中指定 --p…...

springboot原生socket通讯教程

需求背景 最近需要对接一些硬件设备,他们选择了socket通讯,并且使用的是私有化协议加密通讯。这种情况下适合原生的socket加解密解析,不适合NettySocket,这在开发中增加了难度。所有的代码都要手动去敲。如果你的只想通过socket传输一些数据,而且都是json的数据,例如聊天…...

革新排版机产线:一体式IO模块引领自动化高效控制新时代

在瞬息万变的制造业浪潮中&#xff0c;自动化与智能化已成为推动产业升级的关键力量。特别是在印刷行业&#xff0c;排版机的效率与精度直接关系到产品的质量与市场竞争力。近年来&#xff0c;随着技术的不断革新&#xff0c;明达技术MR20一体式IO模块凭借其高度集成、灵活配置…...

《深度学习梯度消失问题:原因与解决之道》

在深度学习的训练过程中&#xff0c;梯度消失是一个常见且棘手的问题&#xff0c;它会严重影响模型的训练效果和性能。以下是对该问题的原因分析与解决办法。 梯度消失问题的原因 首先是激活函数选择不当。像Sigmoid和Tanh这类传统激活函数&#xff0c;在输入值较大或较小时&…...

IP-MS常见问题(一)

用于IP-MS实验的样品&#xff0c;需要多少样品量&#xff1f; 建议使用约2107数量的细胞&#xff08;约5 mg蛋白&#xff09;进行IP实验。 其他类型的IP起始样品&#xff0c;如组织、细菌等可根据蛋白含量进行换算。 经过IP实验步骤或纯化富集的蛋白通常不超过10 μg&#xf…...

四种线程池的创建及任务提交

1. 线程池概述 1.1 线程池的定义 线程池是管理和控制线程使用的一种手段。它通过提前创建一定数量的线程&#xff0c;并将任务提交给这些线程执行&#xff0c;来实现资源的合理分配和任务的高效处理。 关键点&#xff1a; 线程复用&#xff1a;线程池在任务执行完毕后&#…...

【优选算法】查找总价格为目标值的两个商品

链接&#xff1a;LCR 179. 查找总价格为目标值的两个商品 - 力扣&#xff08;LeetCode&#xff09; 解法&#xff1a;利用单调性&#xff0c;使用双指针算法解决问题 1.先从小到大排序 2. sum > t : right--; sum < t : left; sum t : return class Solution {public…...

从零开始学架构——互联网架构的演进

1 技术演进 1.1 技术演进的动力 对于新技术&#xff0c;我们应该站在行业的角度上思考&#xff0c;哪些技术我们要采取&#xff0c;哪些技术我们不能用&#xff0c;投入成本过大会不会导致满盘皆输&#xff1f;市场、技术、管理三者组成的业务发展铁三角&#xff0c;任何一个…...