木灵鱼儿
阅读:2786
js 函数注释
函数注释的一个常用的格式:
/**
* @description: 函数描述
* @param {类型} 参数 描述
* @return {类型} 描述
*/
- description 就是函数的说明,干什么用的
- param 是函数的参数; {}里面表示这个参数是什么类型,后面接参数名称,描述,参数有多少个,@param就有多少个
- return 表示要输出的内容,一般可以省略不写,也可以写,和param 差不多
示例
/**
* @description: 测试函数
* @param {*} a 任何类型参数
* @param {*} b 用来xxx
* @return {*} 返回空
*/
function test(a,b){}
快速注释插件
注释写这么多很烦人的,而且格式在有规律的情况下,自然是有插件用最好了。
vscode安装插件:KoroFileHeader
安装完毕,在需要注释的函数的上一行按下快捷键:ctrl+alt+t
即可自动生成注释模板,然后自己改一改就行了。
使用这个插件,他会在你保存文件的时候在文件的头部加上一个头部注释,这个一般来说不怎么需要,所以我们需要关闭它。
文件 --- 首选项 --- 设置 --- 在右上角有一个打开json --- 打开后再里面的那个{}对象里面添加以下:
// 头部注释
"fileheader.customMade": {
"autoAdd": false, //关闭自动生成头部注释
},
保存即可。
这里放一下我的配置
// 头部注释
"fileheader.customMade": {
"autoAdd": false, //关闭自动生成头部注释
},
//函数注释
"fileheader.cursorMode": {
"description": "",
"param": "",
"return": "",
"Date Changed": ""
},
版权申明
本文系作者 @木灵鱼儿 原创发布在木灵鱼儿 - 有梦就能远航站点。未经许可,禁止转载。
相关推荐
第一章 基本技巧
尽量少用全局变量全局变量污染是一个老生常谈的问题,在es5时代常见的做法就是使用函数作用域隔离,es6时const、let出现,我们还可以直接在块级作用域中声明。相对于使用,我们通过一些代码来回顾一下全局变量污染所带来的问题。全局作用域中是存在this的,this就等于window,只是浏览器为了方便,用window来表示全局对象本身。function sum(x, y) { result = x + y; return result; } console.log(result); //Uncaught ReferenceError: result is not def...
Promise失败重试,可指定重试次数
//模拟异步请求 function axiosFn() { return new Promise((resolve, reject) => { const flge = Math.random(); //随机值 setTimeout(() => { //大于0.7就是成功 if (flge > 0.7) { return resolve(flge); } else { return reject(...
animation 动画的三个事件
const div = document.querySelector("div.box"); div.addEventListener("animationstart", function() { //动画开始运行触发 }); div.addEventListener("animationiteration", function() { //动画每执行一次触发一次,适用用多次动画 }); div.addEventListener("animationend", function() { //...
手写Promise
/* * @Author: mulingyuer * @Date: 2021-12-30 22:06:58 * @LastEditTime: 2022-01-03 05:22:30 * @LastEditors: mulingyuer * @Description: 手写promise * @FilePath: \undefinedc:\Users\13219\Desktop\promise.js * 怎么可能会有bug!!! */ /** * @description: 自定义promise * @param {fucntion} executor 执行器函数(同...
深度合并对象的方法
找了很久,现有的库有两个:1. Mergenpm地址: Merge用法:import merge from 'merge'; const obj1 = { name: 2}; const obj2 = { value: 1 }; //合并 merge(obj1,obj2); console.log(obj1); //{name:2,value:1} //克隆合并-与目标对象无关联 const obj3 = merge(true,obj1,obj2); console.log(obj3); //{name:2,value:1} console.log(obj3 === obj1)...
利用JSON过滤对象和数组中指定的key属性
有时候我们在vue中进行for循环,就会涉及到绑定唯一值key的问题,但是并不是任何时候都会存在所谓的唯一值,使用index下标明显是不合适的,官方也不推荐,除非你for循环出来的列表不用变化。所以一般常用的做法就是给for循环的对象添加一个属性,属性的值是随机的uuid或者时间戳。这样前端问题解决了,如果遍历的数据还需要提交到后端,那么不就多了一个属性,这个属性后端不需要的。所以,我们需要在提交数据前,对数据进行过滤。过滤又得for循环删除?那怎么行,有没有那种通用的,简单的方法。过滤方法/** * @description: 过滤对象中指定的属性,也可以拿来浅拷贝 * @para...
Copy 一个复制操作的类
前言js有一个31k多的star的开源复制库:clipboard.js;但是一些简单复制并不想安装一个库来解决,所以就想自己写一个。copy所需要的东西Selection 对象用于获取被用户选中的部分,通过toString()方法可以获取被选中的文本内容,以及js操作选中。MDN文档:SelectionexecCommand 对象用于以命令的形式来操作网页的内容,说白了就是用它来实现复制文本操作,复制的是选中的文本MDN文档:execCommand 需要注意的是,execCommand在未来将会被遗弃,因为这个api本身是从ie浏览器那边继承的,久而久之各大浏览器都对其做了兼容,虽然...
对象扁平化
前言后端返回给前端的数据,有时候会是一个多层级对象,但是我们前端使用的时候,for循环遍历渲染时,多层级对象往往需要进行单独处理,因为还需要判断这个key值是否存在,否则会报错。强行让后端改变数据结构又好像不现实,无奈,只有自己处理了。掘金看到一位大佬文章《【算法】JS 实现对象的扁平化》感觉很合适,逻辑清晰。要求将对象中的层级扁平化,改成如下格式:// 实现一个 flatten 函数,实现如下的转换功能 const obj = { a: 1, b: [1, 2, { c: true }], c: { e: 2, f: 3 }, g: null, }; // 转换为 l...