资深架构师分享:10个 Javascript 小技巧帮你提升代码质量

2023-11-19

主要介绍以下几点:

  1. 提炼函数
  2. 合并重复的条件片段
  3. 把条件分支语句提炼成函数
  4. 合理使用循环
  5. 提前让函数退出代替嵌套条件分支
  6. 传递对象参数代替过长的参数列表
  7. 少用三目运算符
  8. 合理使用链式调用
  9. 分解大型类

本文会不断更新,不足之处欢迎评论区补充。

1. 提炼函数

好处:

  • 避免出现超大函数。
  • 独立出来的函数有助于代码复用。
  • 独立出来的函数更容易被覆写。
  • 独立出来的函数如果拥有一个良好的命名,它本身就起到了注释的作用。
  • 语义化将多段分离的逻辑放在不同的函数中实现,可以使代码逻辑清晰,清楚的看到每一步在做什么。

代码举例:

实现获取数据,然后操作dom显示数据,最后添加事件

  • 函数提炼前
// 逻辑都写在一起,需要将所有逻辑看完才知道这段代码是干嘛的,局部逻辑无法复用
function main() {
    $.ajax.get('/getData').then((res) => {
        const ul = document.getElementById('ul');
        ul.innerHTML = res.list.map(text => `<li class="li">${text}</li>`).join('\n');
        const list = document.getElementsByClassName('li');
        for (let i = 0; i < list.length; i ++) {
            list[i].addEventListener('focus', () => {
                // do something
            });
        }
    });
}
复制代码
  • 函数提炼后
function getData() {
    return $.ajax.get('/getData').then((res) => res.data.list);
}
function showList(list) {
    const ul = document.getElementById('ul');
    ul.innerHTML = list.map(text => `<li class="li">${text}</li>`).join('\n');
}
function addEvent() {
    const list = document.getElementsByClass
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

资深架构师分享:10个 Javascript 小技巧帮你提升代码质量 的相关文章

  • [C++]备忘录模式

    备忘录模式 Memento Pattern 保存一个对象的某个状态 以便在适当的时候恢复对象 备忘录模式属于行为型模式 github源码路径 https github com dangwei 90 Design Mode 此文件包含 mai

随机推荐

  • Error:Cannot build artifact xxx:war exploded’ because it is included into a circular dependency 解决方法

    我报的错误是day0601和day1202冲突 试了网上的方法删除了idea中artifact中重复文件并没有解决问题 在网上找了很久也没解决 后来自己试了一下 这样操作以后我这个就不会报循环依赖的错误了
  • 天使投资和风险投资有何区别?

    7月5日 天使投资人张青永 左 和创业者胡宁波 右 做客雅虎 谈融资知识和技巧 以下内容摘自实录 主持人 我觉得 赢在中国 的目的就达到了 那进入我们今天的主题就是融资基础知识和技巧 这是一个很专业化的知识 大家对这个并不太清楚 比如天使投
  • 全网最详细IDEAvim配置(.ideavimrc)

    IDEAvim 写在前面 本配置文件用到的插件如下 IdeaVim IdeaVim EasyMotion IdeaVimExtension which key Vim快捷键提示插件 CodeGlance Pro 右侧代码小地图 Transl
  • Python下载库超时Connection to files.pythonhosted.org timed out问题解决(换源)

    一年没用Python 这突然有节课老师让用Python 用就用吧 一来就是一个下马威 pip版本太低不支持 更新还更新不了 就是超时 官网也进不去 抓狂中 按照提示命令更新 更新超时 哇呀呀呀 我们还是冷静下来分析以下问题吧 错误信息提示连
  • 一些常见BootLoader介绍

    首先区分一下BootLoader和Monitor的概念 严格来说 BootLoader只是引导设备并且执行主程序的固件 而Monitor还提供了更多的命令行接口 可以进行调试 读写内存 烧写Flash 配置环境变量等 Monitor在嵌入式
  • Qt自定义界面类并提升(提升的窗口部件)

    1 用Qt Creator新建一个自定义Widget 类名自定义为 QMyForm 2 在Qt Creator自带的设计师里面 把普通的Wiget提升为自定义的QMyForm 选择菜单 提升为 3 手动输入提升的类名 QMyForm 然后点
  • [lightm显示]ubuntu卡在启动界面

    解决lightdm刚下载 重启电脑ubuntu卡在紫色启动界面 1 重启电脑 2 进入恢复模式下的root 3 命令行输入 4 命令行输入reboot 环境 ubuntu20 04 解决 把显示管理器重新改回gdm3即可 1 重启电脑 2
  • 知识图谱之知识融合

    最近在 小象学院 上知识图谱的课程 做了一些笔记 现整理了一下 1 什么是知识融合 将来自不同知识库的同一实体融合在一起 目标 融合各层面的知识 合并两个知识图谱 本体 需要确认的是 1 等价实例 实体的匹配 左右两个人是同一个人 sams
  • 在python中使用pyspark读写Hive数据操作 --转载

    1 读Hive表数据 pyspark读取hive数据非常简单 因为它有专门的接口来读取 完全不需要像hbase那样 需要做很多配置 pyspark提供的操作hive的接口 使得程序可以直接使用SQL语句从hive里面查询需要的数据 代码如下
  • Intent.addFlags() 启动Activity的20种flags

    前言 在使用startActivity时候出现异常 Caused by Android util AndroidRuntimeException Calling startActivity from outside of an Activi
  • STL之set常见用法详解

    摘自胡凡的 算法笔记 仅作记录用 前言 set是一个内部自动有序且不含重复元素的容器 如果要使用set 需要添加set头文件 即 include
  • JavaFX打包为exe文件

    JavaFX打包为exe文件 传统的Java打包为exe文件是先打包成 jar的可执行文件 再用exe4j打包为exe文件 可以参考Java项目打包成exe的详细教程 Jepson6669 博客园 cnblogs com 该方法较为繁琐 而
  • 机器学习之集成学习(实验记录)

    集成学习实验任务 一 实验目标 二 实验内容 三 实验任务及步骤 四 实验总结 一 实验目标 了解集成学习的基本结构 训练方法 实现方法 并通过随机森林与Adaboost算法加深理解 二 实验内容 概念 集成学习 Ensemble lear
  • C++ 一个类访问另一个类的私有成员和保护成员

    友元类 class A friend class B private int aa class B public void output cout lt lt a aa lt lt endl private A a 使用友元类时注意 1 友
  • 前端开发行业真的会被AI取代吗?

    作者 殷圣魁 来源 58架构师 ID architects 58 前言 相信不少人看过一篇人工智能已经能实现自动编写HTML CSS的文章 人工智能开始取代前端的一部分工作 前端开发行业真的被人工智能取代吗 人工智能发展确实速度惊人 但是前
  • 微信开工具报getLocation:fail, the permission value is offline verifying

    解决办法是 部署到服务器就能获取到了
  • 知道用户画像标签有哪些维度、应用场景体系?是种什么样的体验

    相关文章 用户画像 3种标签类型 8大系统模块 用户运营 怎么分析用户活跃 指标波动 用户分析 店铺数据分析 小程序数据分析 思维导图 数据分析全知识 思维导图 Xmind思维导图 常用快捷键使用 本文参考 本文仅作学习分享 侵删 作者 赵
  • 非递归算法——快速排序、归并排序

    哈喽大家好 我是保护小周 本期为大家带来的是常见排序算法中的快速排序 归并排序 非递归算法 分享所有源代码 粘贴即可运行 保姆级讲述 包您一看就会 快来试试吧 目录 一 递归的缺陷 1 1 栈是什么 数据结构 栈 又是什么 他们之间有什么区
  • Python保存数据到已存在的excel文件中【openpyxl / pandas】复制表格中的所有sheet到另一个表格

    大家早上好 本人姓吴 如果觉得文章写得还行的话也可以叫我吴老师 欢迎大家跟我一起走进数据分析的世界 一起学习 感兴趣的朋友可以关注我的数据分析专栏 里面有许多优质的文章跟大家分享哦 前段时间在工作的时候遇到了一个问题 如何将数据保存到已存在
  • 资深架构师分享:10个 Javascript 小技巧帮你提升代码质量

    主要介绍以下几点 提炼函数 合并重复的条件片段 把条件分支语句提炼成函数 合理使用循环 提前让函数退出代替嵌套条件分支 传递对象参数代替过长的参数列表 少用三目运算符 合理使用链式调用 分解大型类 本文会不断更新 不足之处欢迎评论区补充 1