10个必须知道的JavaScript技巧,让你成为更好的程序员

news2024/9/27 5:43:11

1.Promise回调地狱

Promises 提供了一种优雅的方式来处理 JavaScript 中的异步操作。这也是避免“回调地狱”的解决方案之一。但是我并没有真正理解它的意思,所以我写了这段代码。

我做了这些事情:

  • 先获取用户的基本信息。

  • 按用户信息获取所有文章的简要摘要。

  • 通过文章简单获取文章详情。

我在这里根本没有利用 Promise,我们应该像下面的代码片段一样处理它:

2.不处理错误信息

我经常只写请求成功的代码逻辑,而忽略请求失败的代码逻辑。

这是没有经验的,我们应该给出一个用户友好的提示,而不是什么都不做。

3.为函数设置太多参数

当一个函数的参数过多时,它的可读性就会变差,甚至不知道如何正确传递参数。

例子

我们想获取用户的一些基本信息,比如姓名、性别、年龄等。

以上这样的代码,那真是太糟了,如果你的同事这样写代码,你会揍他吗?

事实上,当函数参数过多时,应该使用对象来传递需要的信息,这样会提高其可读性和扩展性。

4.神奇的数字

小伙伴们,你们写过这样的代码吗?很多地方用数字来做逻辑判断似乎很正常。是的,这让我很困惑 1、2、3 到底是什么意思。

我们最好将这些数字定义为常量。

5.使用.length判断字符串长度

大多数时候,我们使用 .length 来判断字符串的长度是安全的,但是在表单输入的情况下要小心。

当我们输入🍫时,nameLen的值为2——这不奇怪吗?

是的,这是有原因的,你猜怎么着?

6.永远不要写代码注释

我们经常向别人抱怨,“你为什么不写代码注释?” 但实际上,我们自己也从来不写它!

我的天,你知道‘dpr’是什么意思吗?没想到是指window devicePixelRatio。

7.无意义的代码注释

与其不写代码注释,也不要写无意义的代码注释,因为它浪费了你的时间。

你不妨解释一下“a”的含义或使用有意义的变量名称!

8.随机命名

过去,我常常编写随机命名变量的笨拙代码片段。

因此,亲爱的朋友们,请你们不要学我,你应该给变量一个适当且有意义的名称。

9.删除不要弃用的代码

很多时候,我们的网站会不断调整功能,有新功能也有过时的功能,但我总是担心以后会用到,所以我们总是注释掉,并没有删除。

其实这种担心是完全没有必要的,因为以后用到的可能性很小。即使以后要用到,也可以通过‘git’来追溯。

10.上千行组件代码

我已经在一个组件中编写了一千多行代码。这太糟糕了,我们应该将组件的功能进一步拆分成更小的组件。

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

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

相关文章

SPI_Master驱动程序框架

SPI_Master驱动程序框架 文章目录SPI_Master驱动程序框架一、SPI传输概述1.1 数据组织方式1.2 SPI控制器数据结构二、 SPI传输函数的两种方法2.1 老方法2.2 新方法致谢参考内核源码: drivers\spi\spi.c 一、SPI传输概述 1.1 数据组织方式 使用SPI传输时,最小的传…

hutool日期工具类相关:获取某月所有周、某周的起止时间或所有日期、计算连续天数

目录前言实现1、获取当月的所有周2、根据指定的第几周,获取这周的开始、结束时间3、获取当前月某一周的所有日期4、多个日期中,计算最大的连续天数5、判断指定日期是否在某个范围内前言 最近做项目,碰到一个比较复杂的日期查询方式&#xff…

内网vCenter部署教程二,最全的了!

一、组网说明 vCenter组网最佳实践 每台服务器需要6个网口,需要三个分布式交换机,每个交换机分配2个物理网卡做冗余,分别做为管理网络、业务网络、高可用网络使用。另vsan网络和vmotion网络可以复用业务网络或管理网络,vcenter HA需要单独用一个网络。 二、创建管理网络…

Ubuntu通过rsync和inotify实现双机热备

Rsync Inotify双机热备 一、备份机操作 备份机:主服务器或主机文件将需要备份的文件同步到此服务器上,即从主服务器上同步过来进行备份。 1.1安装rsync sudo apt-get install rsync1.2修改/etc/dault/rsync文件 sudo vim /etc/default/rsync修改如…

二叉树——修剪二叉搜索树

669. 修剪二叉搜索树 给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。修剪树 不应该 改变保留在树中的元素的相对结构 (即,如果没有被移除,原有的父代…

GPT:通用预训练语言模型

论文标题:Improving Language Understanding by Generative Pre-Training论文链接:https://www.cs.ubc.ca/~amuham01/LING530/papers/radford2018improving.pdf论文来源:OpenAI一、概述从无标注文本中高效学习的能力对于缓解对监督学习的依赖…

PLUMBER Boosting the Propagation of Vulnerability Fixes in the npm Ecosystem

PLUMBER: Boosting the Propagation of Vulnerability Fixes in the npm Ecosystem 1.背景 npm是JavaScript编程语言中最大的生态系统,截至2022年1月,它拥有超过180万个第三方软件包。2017年11月2日的npm快照进行的调查显示,在610,097个包中…

从16K跳槽到20K,最后算下来年薪却还降了,我笑了····

跳槽时薪资涨了 4000,但年薪总包算下来反而变少了,这是怎么回事? 上周,我星球里一个同学就遇到了这么一个问题,薪资涨了、总包降了,而且谈薪时把自己坑了。 作为一个案例,我觉得对很多人可能会…

【项目设计】高并发内存池 (四)[pagecache实现]

🎇C学习历程:入门 博客主页:一起去看日落吗持续分享博主的C学习历程博主的能力有限,出现错误希望大家不吝赐教分享给大家一句我很喜欢的话: 也许你现在做的事情,暂时看不到成果,但不要忘记&…

数据结构:堆的实现与建堆时间复杂度分析

目录 前言 一.堆的介绍 1.堆的本质 2.堆的分类 二.堆的实现(以小根堆为例) 1.关于二叉树的两组重要结论: 2.堆的物理存储结构框架(动态数组的简单构建) 3. 堆元素插入接口(以小根堆为例) 堆尾元素向上调整的算法接口: 4.堆元素插入接口测试 5.堆元素插入…

【chatgpt】教你如何创建一个Vue脚手架

要创建一个Vue脚手架,您可以使用Vue CLI。Vue CLI是一个命令行工具,可帮助您快速创建Vue项目并提供开发环境。 以下是使用Vue CLI创建Vue脚手架的步骤: 首先,您需要安装Node.js。您可以在Node.js官网上下载和安装它。安装Vue CL…

计网面试题-在浏览器中输入url地址到显示主页的过程

先说答案哈 1DNS解析( DNS解析就是把一个域名转换成一个IP地址。)1)、先到浏览器的DNS缓存中查询是否有对应记录,如有则直接返回ip地址,完成解析,如果没有则下一步;2)、继续查询本地host文件,…

TIA博途中通过SCL语言实现快速排序的具体方法示例

TIA博途中通过SCL语言实现快速排序的具体方法示例 首先,了解一下快速排序的原理: 排序算法的思想非常简单,在待排序的数列中,我们首先要找一个数字作为基准数。为了方便,我们一般选择第 1 个数字作为基准数(其实选择第几个并没有关系)。接下来我们需要将这个待排序的数列…

Python开发之Python导包的几种方法,自定义包的生成以及导入详解

Python是一种跨平台的计算机程序设计语言。 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发。 下面介绍python的几种…

网络协议---TCP和UDP

文章目录TCPTCP简介内容TCP三次握手建立连接TCP四次挥手断开连接常见面试题TCP连接资源UDPUDP简介内容TCP TCP简介内容 传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议&#xff0c…

MySQL-DQL语句

DQL语句 DQL(Data Query Language)查询数据 操作查询:select简单的查询,复杂的查询数据库中最核心的语言,最重要的语句使用频繁的语句 指定查询 查询全部 语法: select 全部字段(*&#x…

全流程基于最新导则下的生态环境影响评价技术方法及图件制作与案例实践

根据最新生态环境影响评价导则,结合生态环评内容庞杂、综合性强的特点,以既包括陆域、又包括水域的项目为主要案例,对生态环评的具体流程及所需内容进行系统阐述。利用Rstudio、Fragstats等软件分析计算生态环评中所需各种指数,利…

项目管理工具dhtmlxGantt甘特图入门教程(十五):从MS项目导入/导出(下)

这篇文章给大家讲解dhtmlxGantt请求大文件导入的大小限制。 dhtmlxGantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表,可满足应用程序的所有需求,是完善的甘特图图表库 DhtmlxGantt正版试用下载(qun 764148812)https:…

【算法数据结构体系篇class10、11】:二叉树

一、二叉树的先序、中序、后序遍历先序:任何子树的处理顺序都是,先头节点、再左子树、然后右子树中序:任何子树的处理顺序都是,先左子树、再头节点、然后右子树后序:任何子树的处理顺序都是,先左子树、再右…

基于tsfresh包的单类时间序列特征提取

前言 时间序列特征提取包中tsfresh较为流行,但是其官方教程给出的例子是机器人故障的数据集,其中的id列为各组不同的实验。然后我就一直在想能否做单类的,比如电力预测,或者是某一条街道的交通预测,但是翻遍了文档都没…