欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

浅谈JS如何写出漂亮的条件表达式

程序员文章站 2022-03-07 10:39:54
多条件语句多条件语句使用array.includes举个例子这种写法在条件比较少的情况下看起来没有问题,此时我们只有 2 种动物,但是如果我们有更多的条件需要判断(更多的动物)呢?如果我们继续拓展判断...

多条件语句

多条件语句使用array.includes

举个例子

这种写法在条件比较少的情况下看起来没有问题,此时我们只有 2 种动物,但是如果我们有更多的条件需要判断(更多的动物)呢?如果我们继续拓展判断的条件,那么代码将会变得难以维护,而且逻辑会不清晰。

解决方法

可以使用array.includes来重写条件语句

在这里,我们创建了一个动物数组,以便将条件与代码的其余部分分开提取。现在,如果我们想要检查任何其他动物,我们需要做的就是添加一个新的数组项。

我们还可以在这个函数的范围之外使用 animals 变量,以便在代码的其他地方重用它。这是一种编写更清晰、更容易理解和维护的代码的方法。不是吗?

多属性对象

这是一个非常好的技巧来压缩你的代码,使它看起来更简洁。让我们以前面的示例为例,添加更多的条件。如果这个动物不是一个简单的字符串,而是一个具有某些属性的对象呢?

所以现在的要求是:

  • 如果没有动物,抛出一个错误
  • 打印动物的类型
  • 打印动物的名字
  • 打印动物的性别

上面的代码它工作得很好,但是代码很长,很难维护。如果不使用提示工具,可能会浪费一些时间来确定右括号的位置。想象将会发生什么如果代码更复杂的逻辑。很多if...else的语句!

我们可以使用三元操作符、&&条件等来重构上面的函数,但是让我们使用多个返回语句来编写更精确的代码。

在重构版本中,还包括解构默认参数默认参数确保如果我们将 undefined 作为参数传递给方法,我们仍然有一个要解构的值,这里是一个空对象 {}。

通常,代码是在这两种方法之间编写的。

举个例子

现在,我们有:

  • 过滤无效条件的 if/else 语句
  • 3 层嵌套的 if 语句(条件 1、2 和 3)
  • 一个通用的规则是当发现无效条件时尽早返回。

通过这样做,我们减少了一个嵌套语句的级别。这种编码风格很好,特别是当使用长if语句时。通过反转条件并提前返回,我们可以进一步减少嵌套if。

请看下面的条件 2 是怎么做的:

通过反转条件 2 的条件,代码不再具有嵌套语句。当我们有很多条件并且希望在任何特定条件不满足时停止进一步的处理时,这种技术是有用的。

因此,总是以减少嵌套和尽早返回为目标,但不要过度。

替换switch语句

让我们看一下下面的例子,我们想要根据颜色打印水果:

上面的代码实现没有错误,但是很冗长,同样的结果可以使用更简洁的语法来实现。

同样的,也可以使用 map 来实现:

map是 es5 以来可用的对象类型,它允许存 key-value。

对于上面的示例,可以使用 array.filter 实现相同的结果。

默认参数与解构

在使用 javascript 时,我们总是需要检查 null/undefined 并分配默认值或编译中断。

如果蔬菜是一个对象呢?我们可以分配一个默认参数吗?

在上面的示例中,我们希望打印蔬菜名(如果它可用)或打印 unknown。

我们可以通过使用默认参数&解构来避免条件if (vegetable && vegetable.name){}。

因为我们只需要属性名,所以我们可以使用 {name} 来改变参数的结构,然后我们可以在代码中使用 name 作为变量,而不是使用 vegetable.name。

我们还将一个空对象 {} 赋值为默认值,否则在执行 printvegetablename(undefined) 时,它将给出一个错误—— cannot destructure property name of undefined or null,因为在 undefined 中没有 name 属性。

匹配所有或部分条件

我们可以通过使用这些array方法来减少代码行数。

下面的代码,我们想要检查是否所有的水果都是红色的:

上面的代码太过冗长,我们可以通过使用 array.every 来减少代码行:

同样的,如果我们想要测试任何一个水果是否是红色的,我们可以使用 array.some:

使用可选链和 nullish 合并

https://developer.mozilla.org/zh-cn/docs/web/javascript/reference/operators/%e5%8f%af%e9%80%89%e9%93%be

这两个功能对于 javascript 编写更简洁的条件非常有用。在编写本文时,它们还没有得到完全的支持,可能需要使用babel进行编译。

可选链接能够处理类似树的结构,而不需要显式地检查中间节点是否存在,并且nullish与可选链接结合使用非常有效,可以确保不存在节点的默认值。

举个例子:

因此,如果我们想打印出来,如果汽车制造商来自美国,代码应该是这样的:

可以清楚地看到,对于更复杂的对象结构,这会变得多么混乱。有一些第三方库,如 lodash 或idx,它们有自己的功能。例如 lodash 有 _.get 方法。但是,在 javascript 语言本身中引入这个特性。

以下是这些新功能的工作原理:

目前在 stage 3 阶段。

以上就是基于javascript实现条件表达式的一些分享,希望对你能有所帮助~

以上就是浅谈js如何写出漂亮的条件表达式的详细内容,更多关于js如何写出漂亮的条件表达式的资料请关注其它相关文章!

相关标签: JS 条件表达式