0

在过去的几年里,我经常偶然发现 Javascript 代码,它让我想起了旧的“Perl”编程时代,并且在 if/else 子句上使用了布尔术语。这通常会导致每行代码更短且复杂度更高(有时会创建不必要的默认值或空循环)。

我不想讨论这是好还是坏的做法:-)

但我很好奇这种紧凑的“布尔式”风格是否有名字?

每行长/相当“冗长”/较低的复杂性:

function sum(a) {

  if (!Array.isArray(a)) {
    // No array
    return 0;
  }

  if (a.length === 0) {
    // Empty
    return 0;
  }

  var sum = 0;

  for (let i = 0; i < a. length; i++) {
    sum += a[i];
  }

  return a;
}

类似的结果,使用三元求值和 ES5“函数式”编程:

// Would we call this "functional" programming? Not sure.

const sum = (arr) => (
  Array.isArray(arr) ? arr.reduce((before, value) => before + value, 0) : 0
);

更短,使用布尔评估:

// How to call this (professionally)?

const sum = (arr) => (
  (arr || []).reduce((before, value) => before + value, 0)
);

请注意,在最后一个示例中,代码对于人类读者来说是最短的,但它也可能创建一个“不必要的”数组,甚至评估空循环,即可能会消耗更多的内存和更多的处理工作。

只是出于演示目的的快速破解,没有真实世界的例子!

4

0 回答 0