JavaScript进阶:如何写出优雅的JavaScript代码

JavaScript进阶:如何写出优雅的JavaScript代码目录一 可维护性代码二 编码规范 可读性三 变量和函数命名四 松散耦合 1 解耦 HTML 和 JavaScript2 解耦 CSS 和 JavaScript3 解耦应用程序逻辑和事件处理程序五 编码惯例六 作用域意识 1 避免全局查找 2 不适用 with 语句七 优化循环 1 简化终止条件 2 简化循环体 3 使用后测试循环 4 展开循环八 语句最少化 1 多个变量声明 2 插入迭代性值 3 使用数组和对象字面量九 优化 DOM 交互 1 实时更新最小化 2 使用 innerHTML3 使用委托事件 4 注意 HTMLCollecti 一 可维护性

一、可维护性代码

通常说代码可维护就意味着它具备以下的特点:

  1. 容易理解,无须求助原始开发者,任何人一看代码就知道它是干什么的,以及它是怎么实现的;
  2. 符合常识,代码中的一切都显得顺理成章,无论操作多么复杂;
  3. 容易适配,即使数据发生变化也不用完全重写;
  4. 容易扩展,代码架构经过认真设计,支持未来扩展核心功能;
  5. 容易调试,出问题时,代码可以给出明确的信息,通过它能直接定位问题;

二、编码规范-可读性

  1. 函数和方法,每个函数和方法都应该有注释来描述其用途,以及完成任务所用的算法。同时,也写清楚这个函数或方法的前提,每个参数的含义,以及函数是否返回值。
  2. 大型代码块,多行代码但用于完成单一任务的,应该在前面给出注释,把要完成的任务写清楚。
  3. 复杂的算法,如果使用了独特的方法解决问题,要通过注释解释明白。这样不仅可以帮助别人查看代码,也可以帮助自己今后查看代码。
  4. 使用黑科技,一些特殊的方法,特定的假设。

三、变量和函数命名

代码中变量和函数的适当命名对于其可读性和可维护性至关重要。

  1. 变量名应该是名称;
  2. 函数名应该以动词开始;
  3. 变量、函数、方法都以小写字母开头,使用驼峰大小写形式;
  4. 名称要尽量用描述性和直观的词汇,但不要过于冗长;

四、松散耦合

1、解耦HTML和JavaScript

<!-- 使用<script>造成紧密耦合 --> <script> document.write("hello 哪吒编程"); </script> <!-- 使用事件处理程序属性造成紧密耦合 --> <input type="button" value="Click me" onclick="dosomething()"/> 

2、解耦CSS和JavaScript

element.style.color = "red"; element.style.backgroundColor = "blue"; 

3、解耦应用程序逻辑和事件处理程序

  1. 不要把event对象传给其他方法,而是只传递event对象中必要的数据;
  2. 应用程序中每个可能的操作都应该无须事件处理程序就可以执行;
  3. 事件处理程序应该处理事件,而把后续处理交给应用程序逻辑;
    做到以上几点能够给任何代码的可维护性带来巨大的提升,同时也能为将来的测试和开发提供很多可能性。

五、编码惯例

  1. 重复出现的值
  2. 用户界面字符串
  3. URL
  4. 任何可能变化的值

六、作用域意识

随着作用域链中作用域数量的增加,访问当前作用域链外部变量所需要的时间也会增加,访问全局变量始终比访问局部变量要慢,因为必须遍历作用域链,任何可疑缩短遍历作用域链时间的举措都能提升代码性能。

1、避免全局查找

2、不适用with语句

在性能很重要的代码中,应避免使用with语句,与函数类似,with语句会创建自己的作用域,因此也会加长其中代码的作用域链。在with语句中的diamagnetic一定比在它外部执行的代码慢,因为作用域链查找时多一步。

七、优化循环

循环时编程中常用的语法构造,因此在JavaScript中十分常见,优化这些循环时性能优化的重要内容,因为循环会重复多次运行相同的代码,所以运行时间会自动增加。

1、简化终止条件

因为每次循环都会计算终止条件,所以它应该尽可能地快。

2、简化循环体

循环体是最花时间的部分,因此要尽可能优化。要确保其中不包含可以轻松转移到循环外部的密集计算。

3、使用后测试循环

最常见的循环时for和while循环,这两种循环都属于先测试循环。do-while就是后测试循环,避免了对终止条件初始化评估,因此会更快。

4、展开循环

如果循环的次数是有限的,那么通常抛弃循环而直接多次调用函数会更快。

八、语句最少化

JavaScript代码语句的数量影响执行的速度。一条可以执行多个操作的语句,比多条语句中每个语句执行一个操作要快。那么优化的目标就是寻找可以合并的语句,以较少整个脚本的执行时间。

1、多个变量声明

2、插入迭代性值

let name = values[i]; i++; 

3、使用数组和对象字面量

九、优化DOM交互

在所有JavaScript代码中,涉及DOM的部分无疑是非常慢的。DOM操作和交互需要占用大量时间,因为经常需要重新渲染整个或部分页面。此外,看起来简单的操作也可能花费很长时间,因为DOM中携带着大量信息。理解如何优化DOM交互可以极大地提升脚本的执行速度。

1、实时更新最小化

访问DOM时,只要访问的部分是显示页面的一部分,就是在执行实时更新操作。之所以称其为实时更新,是因为涉及立即更新页面的显示,让用户看到。每次这样的更新,无论是插入一个字符还是删除页面上的一个内容,都会导致性能损失。这是因为浏览器需要为此重新计算数千项指标,之后才能执行更新。实时更新的次数越多,执行代码所需的时间也越长。

2、使用innerHTML

3、使用委托事件

4、注意HTMLCollection

十、JavaScript思维导图

在这里插入图片描述

为什么80%的码农做不了架构师?>>>

Java专栏目录 | 点击这里

在这里插入图片描述

十一、关注公众号哪吒编程,回复1024,获取思维导图,还有不定期的送书活动

  1. 一步到位!Java程序设计
  2. 极简Java
  3. Oracle PL/SQL从入门到精通
  4. Python自然语言处理入门

在这里插入图片描述


版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/211800.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午9:34
下一篇 2026年3月18日 下午9:35


相关推荐

  • NewNet收购Tekelec的移动通信业务

    NewNet收购Tekelec的移动通信业务原文地址 http www ed china com ART HN e63b1367 HTM 移动技术 无线宽带 通信以及信令解决方案和服务领域的企业 NewNetCommun nbsp LLC 宣布 对 Tekelec 的移动通讯业务部门的收购已告完成 该公司显著拓展了移动通信领域的服务 这是其在全球拓展新市场

    2026年3月19日
    1
  • JVM之JVM运行时内存结构, JDK1.7 JVM内存结构, JDK1.8 JVM内存结构, JVM堆内存结构

    JVM之JVM运行时内存结构, JDK1.7 JVM内存结构, JDK1.8 JVM内存结构, JVM堆内存结构1.JVM内存图1.1JDK1.7JVM内存图程序计数器:线程私有的(每个线程都有一个自己的程序计数器),是一个指针.代码运行,执行命令.而每个命令都是有行号的,会使用程序计数器来记录命令执行到多少行了.Java虚拟机栈:线程私有的(每个线程都有一个自己的Java虚拟机栈).一个方法运行,就会给这个方法创建一个栈帧,栈帧入栈执行代码,执行完毕之后出栈(弹栈)本地方法栈:线程私有的(每个线程都有一个自己的本地方法栈),和Java虚拟机栈类似,Java虚拟机栈加载

    2022年5月29日
    36
  • 华硕老毛子Padavan使用IPV6+Aliddns远程管理路由

    华硕老毛子Padavan使用IPV6+Aliddns远程管理路由华硕老毛子Padavan使用IPV6远程管理路由前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:以下是本篇文章正文内容,下面案例可供参考一、pandas是什么?示例:pandas是基于NumPy的一种工具,该工具是为了解决数据分析任务而创建的。二、使用步骤1.引入库代码如下(示例):importnumpyasnpimportpandasaspdimportmatplotlib.pyplotaspltimportseaborna

    2022年6月5日
    520
  • SDK和API有哪些区别

    SDK和API有哪些区别SDK 和 API 的区别软件开发中经常混淆的两个术语是 API 和 SDK API 代表 应用程序编程接口 是指用于访问 Web 工具或数据库的编程指令和标准 例如 软件公司通常会公开或私下向其他软件开发人员发布其 API 以便他们可以设计由其服务提供支持的产品 API 可以打包在 SDK 或软件开发工具包中 SDK 通常是一组软件开发工具 允许为特定平台创建应用程序 SDK 可以包括一个或多个 API 以及编程工具和文档 以 JavaSDK 为例 它包含一个 API 以及编译器 运行时和其他杂项工具

    2026年3月18日
    2
  • Centos安装字体

    Centos安装字体

    2021年5月30日
    118
  • 依赖关系(“使用”关系)

    依赖关系(“使用”关系)依赖关系,可以理解成“USE-A”关系即使用关系。依赖关系是一种使用关系,如果A类中的某个方法使用了B类对象,那么就可以说A类依赖B类。A类方法的形式参数是B类类型。也就是说A类对象如果要使用方法

    2022年7月3日
    37

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号