返回顶部
首页 > 资讯 > 精选 >JavaScript多级判定代码如何优化
  • 214
分享到

JavaScript多级判定代码如何优化

2023-07-05 05:07:12 214人浏览 独家记忆
摘要

本篇内容介绍了“javascript多级判定代码如何优化”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、场景业务代码里, 一次操作可能会前

本篇内容介绍了“javascript多级判定代码如何优化”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

一、场景

业务代码里, 一次操作可能会前置多个判定, 我以前只是在函数的开头使用if语句去做这些事情, 虽然只是拦截一下不需要做else, 但是好多个判定堆在一起看着会有点…low, 而且, 如果这些东西堆在函数开头的话, 看起来就像这样:

xxx () {  xxx  xxx  xxx  xxx  xxxxxxxxxxxxxxxxxxxxxxx  xxxxxxxxxxxxxxxxxxxxxxxxxxx  xxxxxxxxxxxxxxxxxxxxxxxxxxxxx  xxxxxxxxxxxxxxxxxxxxxxxxxx  xxxxxxxxxxxxxxxxxxxxxxxx  xxxxxxxxxxxxx}

像在竖大拇指 ), 咳…说回这种方法.

这其实是使用二元运算符 "&&"完成的一种简化写法, 可以理解为一种没有else的三元运算(因为我的逻辑里需要这种没有处理办法的写法), 我原本以为它需要void来驱动…的确可以在这种表达式外围包裹void, 我的确是这么做的, 整整一天.

void 运算符对给定的表达式进行求值,然后返回 undefined。

但其实根本没必要, void与否并不干扰执行.

Vue源码(此处仅指Vue2.6版, 我最近在看这个)里有大量的运用逻辑运算符来表达 “那么” 或者 “so” 的写法, 比如

src/core/vdom/patch.js中的这个函数.

function sameInputType (a, b) {  if (a.tag !== 'input') return true  let i  const typeA = isDef(i = a.data) && isDef(i = i.attrs) && i.type  const typeB = isDef(i = b.data) && isDef(i = i.attrs) && i.type  return typeA === typeB || isTextInputType(typeA) && isTextInputType(typeB)}

二、优化多级判定

最初我在使用这种改进后的if结构, 不再使用包裹式, 而是这种像闸口一样的结构.

当然特殊情况也还是要用if-else结构, 能优化就优化, 不能也不要强求.

1.优化if-else结构

就像这样:

if() {
  if() {

  } else if() {
  
  } else if() {

  }
} else if () {
  if() {

  } else if() {

  } else {

  }
}

再复杂一些, 再在内部加入各种逻辑, 就有些头疼了.

完全可以把每个条件单独分出一个if, 顺序不变, 比如以上可以优化为:

if () {
  if () {

  }
  if () {

  }
  if() {

  }
}
if () {
  if () {

  }
  if () {

  } else { // else一般没什么办法...

  }
}

else if里的"或"关系也可以单独拆一个 if 出来, 在看起来很复杂的情况下, 提升可读性.

图示一下的话, if-else-if结构就像深墙老院:

JavaScript多级判定代码如何优化

优化后的if结构更像是关隘:

JavaScript多级判定代码如何优化

有一个专有名词validation gatekeeping(验证守护), 即是描述这种验证结构.

但是一定注意判定条件的次序, 有些地方是必须用else if的, 否则会出现一个条件同时执行了多套处理方案的情况比如下面这个例子:

for (const key in newWorld) {  if (key === 'webGLGroup') {    this.worldList[oldWorldIndex][key]['children'] = this.worldList[oldWorldIndex][key]['children'].filter((ele) => { return ele.type !== 'Group' });    this.worldList[oldWorldIndex][key]['children'].push(...newWorld[key]['children'].filter((ele) => { return ele.type === 'Group' }));    for (const pro in newWorld[key]) pro !== 'children' && pro !== 'position' && pro !== 'rotation' && pro !== 'quaterNIOn' && pro !== 'scale' && (this.worldList[oldWorldIndex][key][pro] = newWorld[key][pro]);  } else if (key !== 'frameInfo') this.worldList[oldWorldIndex][key] = newWorld[key];}

这里把else if替换成if就会导致keyWEBglGroup时两条逻辑均会被执行.

所以原则还是能优化的优化.

2.二元运算符简化

嵌套else-if结构不太好用这种方式, 对于优化后的if结构用二元运算符重写, 个人觉得外层的大判定还是用if可读性会更好, 内部小判定用二元符简洁, 但其实你要是用二元运算符做嵌套判定结构的话, 层级问题会难以处理, 多个’&&'运算连在一起的时候JavaScript会将其解析为 仅最后一个&&为判定, 其他&&全表示 ‘和’ 关系.

当然如果你愿意在里面写函数的话是可以解决这个问题的, 用三元运算符做大判定也是可以的, 但是不好…

重写成如下:

if (10 > a > 0) {  a > 1 && b > 3 && console.log('HelloWorld_1');  (a > 2 && b > 4  ||  a === 100 && b > 10) && console.log('HelloWorld_2')  // 这句可以再拆一个if出来的, 只是为了说明判定原理, 括号需要加  // a大于2并b大于4 或 a等于100并b大于10 均可输出HelloWorld_2}if (a > 10) {  // 可以结合三元运算符  a === 12 ? c === 3 && console.log("a") : (b === 6 || c === 3 && a !== 15) && console.log("b")  // 如何让前端同事追杀自己  // 如果a等于12, 判定如果c等于3输出a  // 如果a不等于12, 判定b等于6或c等于3并且a不为15,输出b}

但是这种逻辑运算符我现在没有找到能在判定完成之后跳出执行的方法, 也就是说你可以用这个方法沿路做一些顺手的操作, 但是不能像在if里那样做完判定可以return跳出函数.

const a = 3 < 4 && 1console.log(a)

然后, 额, 你可以用这种方法返回值。目的是提升可读性和简洁化代码, 如果一个很长的处理方案或者很长的条件就这样安插在二元运算符中间, 适得其反.

“JavaScript多级判定代码如何优化”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: JavaScript多级判定代码如何优化

本文链接: https://lsjlt.com/news/349673.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • JavaScript多级判定代码如何优化
    本篇内容介绍了“JavaScript多级判定代码如何优化”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、场景业务代码里, 一次操作可能会前...
    99+
    2023-07-05
  • JavaScript多级判定代码优化浅析
    目录一、场景二、优化多级判定1.优化if-else结构2.二元运算符简化一、场景 业务代码里, 一次操作可能会前置多个判定, 我以前只是在函数的开头使用if语句去做这些事情, 虽然只...
    99+
    2023-02-22
    JS多级判定 JS多级判定优化 JS多级判定简化
  • JavaScript如何优化逻辑判断代码详解
    前言 我们日常使用到的逻辑判断语句有 if...else...、switch...case...、do...while...等。 在简单场景下,我们可能对这些语法的性能没有什么感觉,...
    99+
    2024-04-02
  • 如何优化Javascript前端代码
    这期内容当中小编将会给大家带来有关如何优化Javascript前端代码,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。JavaScript的作用是什么1、能够嵌入动态文本于HTML页面。2、对浏览器事件做出...
    99+
    2023-06-14
  • Javascript前端优化代码
    目录if 判断的优化1、最简单的方法:if 判断2、好一点的方法:Switch3、更优的方法: 策略模式includes 的优化for 循环数组去重1、最传统的方法:利用数组的ind...
    99+
    2024-04-02
  • 如何在JavaScript中优化逻辑判断
    如何在JavaScript中优化逻辑判断?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。嵌套层级优化function supply(fruit, quan...
    99+
    2023-06-15
  • 如何优化jQuery代码
    本篇文章给大家分享的是有关如何优化jQuery代码,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。需要优化的代码大致是这样的,也不方便直接把人家...
    99+
    2024-04-02
  • JS如何优化代码
    这篇文章主要介绍了JS如何优化代码,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、松耦合当修改一个组件而不需要更改其他组件时,就做到了松耦...
    99+
    2024-04-02
  • 如何优化PHP代码
    这篇文章主要介绍了如何优化PHP代码,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前言这是一个后台用户列表的搜索功能搜索条件可否并行是否必填...
    99+
    2024-04-02
  • CSS代码如何优化
    小编给大家分享一下CSS代码如何优化,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!div+css代码优化方案介绍-css代码优化...
    99+
    2024-04-02
  • 如何优化Python代码
    如何优化Python代码,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。优化是什么首先定义什么是优化。我们将使用一个直观的示例进行此操作。这是我们的问题:假设给定一个数组,其...
    99+
    2023-06-16
  • python 代码检查,实现行级代码优化
        有时候运行一个python程序,它需要运行很长时间。你或许想提升该程序的运行效率。那该怎么做那?     首先需要你要找到该程序瓶颈在哪里~   比如,哪个函数的运行花费时间比较长? 哪个函数占用内存比较多,是否需要优化对内存的使用...
    99+
    2023-01-31
    代码 python
  • javascript如何根据月判定有多少天
    这篇“javascript如何根据月判定有多少天”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这...
    99+
    2024-04-02
  • JavaScript 代码优化终极指南:成为 JavaScript 优化大师
    JavaScript 是一种灵活且强大的语言,但如果编写不当,它可能会变得很慢。通过遵循一些简单的优化技巧,您可以显著提高 JavaScript 代码的速度和性能。 1. 使用严格模式 严格模式是一种 JavaScript 语法,可以帮助...
    99+
    2024-02-27
    JavaScript、代码优化、性能提升、代码压缩、代码规范
  • 网站代码如何优化
    小编给大家分享一下网站代码如何优化,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!  众所周知,现如今从搜索引擎的角度出发,我们都提倡使用div+css来布局网站,...
    99+
    2023-06-10
  • JavaScript如何格式化JSON代码
    这篇文章主要为大家展示了“JavaScript如何格式化JSON代码”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JavaScript如何格式化JSON代码”这篇文章吧。格式化JSON代码我们都...
    99+
    2023-06-27
  • JavaScript 代码优化秘籍:如何让你的代码更简洁、更高效
    作为一名 JavaScript 开发人员,优化代码是至关重要的。优化代码可以提高性能、可读性和可维护性。本文将分享一些常用的 JavaScript 代码优化技巧,帮助您写出更优质的代码。 1. 使用严格模式 严格模式可以帮助您发现代码中...
    99+
    2024-02-27
    JavaScript 代码优化、性能、可读性、可维护性、代码质量
  • JavaScript 代码优化秘籍:如何让你的代码更健壮、更可靠
    1. 使用严格模式 严格模式是 JavaScript 中的一种语法模式,它可以帮助您更早地发现错误并确保您的代码更安全。要使用严格模式,您可以在脚本的顶部添加"use strict";语句。例如: "use strict"; // 你...
    99+
    2024-02-27
    JavaScript 优化、代码质量、性能优化、可靠性
  • JavaScript 代码优化实战教程:手把手教你优化你的代码
    1. 使用严格模式 严格模式是一种有助于消除 JavaScript 中一些常见错误的模式。它可以防止代码中的某些操作,例如: 在未声明的情况下使用变量 对只读属性进行赋值 删除未定义的属性 使用 eval() 函数 使用 with 语...
    99+
    2024-02-27
    JavaScript 代码优化、网站性能、用户体验
  • 如何优化CSS代码写法
    今天就跟大家聊聊有关如何优化CSS代码写法,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。众所周知,SEO优化很重要的一点就是布局,而DIV+CSS布...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作