首页 > 语言 > JavaScript > 正文

详解写好JS条件语句的5条守则

2024-05-06 15:42:04
字体:
来源:转载
供稿:网友

在用 JavaScript 工作时,我们经常和条件语句打交道,这里有5条让你写出更好/干净的条件语句的建议。

目录:

1.多重判断时使用 Array.includes

2.更少的嵌套,尽早 return

3.使用默认参数和解构

4.倾向于遍历对象而不是 Switch 语句

5.对 所有/部分 判断使用 Array.every & Array.some

6.总结

1.多重判断时使用 Array.includes

让我们看一下下面这个例子:

// conditionfunction test(fruit) { if (fruit == 'apple' || fruit == 'strawberry') {  console.log('red'); }}

第一眼,上面这个例子看起来没问题。如果我们有更多名字叫 cherry 和 cranberries 的红色水果呢?我们准备用更多的 || 来拓展条件语句吗?

我们可以用 Array.includes (Array.includes)重写条件语句。

function test(fruit) { const redFruits = ['apple', 'strawberry', 'cherry', 'cranberries']; if (redFruits.includes(fruit)) {  console.log('red'); }}

我们把红色的水果(red fruits)这一判断条件提取到一个数组。这样一来,代码看起来更整洁。

2.更少的嵌套,尽早 Return

让我们拓展上一个例子让它包含两个条件。

如果没有传入参数 fruit,抛出错误 接受 quantity 参数,并且在 quantity 大于 10 时打印出来
function test(fruit, quantity) { const redFruits = ['apple', 'strawberry', 'cherry', 'cranberries']; // 条件 1: fruit 必须有值 if (fruit) {  // 条件 2: 必须是red的  if (redFruits.includes(fruit)) {   console.log('red');   // 条件 3: quantity大于10   if (quantity > 10) {    console.log('big quantity');   }  } } else {  throw new Error('No fruit!'); }}// 测试结果test(null); // error: No fruitstest('apple'); // print: redtest('apple', 20); // print: red, big quantity

在上面的代码, 我们有:

1个 if/else 语句筛选出无效的语句 3层if嵌套语句 (条件 1, 2 & 3)

我个人遵循的规则一般是在发现无效条件时,尽早Return。

/_ 当发现无效语句时,尽早Return _/function test(fruit, quantity) { const redFruits = ['apple', 'strawberry', 'cherry', 'cranberries']; // 条件 1: 尽早抛出错误 if (!fruit) throw new Error('No fruit!'); // 条件 2: 必须是红色的 if (redFruits.includes(fruit)) {  console.log('red');  // 条件 3: 必须是大质量的  if (quantity > 10) {   console.log('big quantity');  } }}

这样一来,我们少了一层嵌套语句。这种编码风格非常好,尤其是当你有很长的if语句的时候(想象你需要滚动到最底层才知道还有else语句,这并不酷)

我们可以通过 倒置判断条件 & 尽早return 进一步减少if嵌套。看下面我们是怎么处理判断 条件2 的:

/_ 当发现无效语句时,尽早Return _/function test(fruit, quantity) { const redFruits = ['apple', 'strawberry', 'cherry', 'cranberries']; // 条件 1: 尽早抛出错误 if (!fruit) throw new Error('No fruit!'); // 条件 2: 当水果不是红色时停止继续执行 if (!redFruits.includes(fruit)) return;  console.log('red'); // 条件 3: 必须是大质量的 if (quantity > 10) {  console.log('big quantity'); }}            
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选