zoukankan      html  css  js  c++  java
  • 提高js可读性

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

    例子:

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

    对比:

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

    2、更少的嵌套,尽早Return

    例子:

    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 fruits
    test('apple'); // print: red
    test('apple', 20); // print: red, big quantity

    对比:

    /_ 当发现无效语句时,尽早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');
      }
    }

    3、使用默认参数和解构

    例子:

    function test(fruit, quantity) {
      if (!fruit) return;
      // 如果 quantity 参数没有传入,设置默认值为 1
      const q = quantity || 1; 
    
      console.log(`We have ${q} ${fruit}!`);
    }
    
    //test results
    test('banana'); // We have 1 banana!
    test('apple', 2); // We have 2 apple!

    对比:

    // 解构 - 仅仅获取 name 属性
    // 为其赋默认值为空对象
    function test({name} = {}) {
      console.log (name || 'unknown');
    }
    
    // test results
    test(undefined); // unknown
    test({ }); // unknown
    test({ name: 'apple', color: 'red' }); // apple

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

    例子:

    function test(color) {
      // 使用条件语句来寻找对应颜色的水果
      switch (color) {
        case 'red':
          return ['apple', 'strawberry'];
        case 'yellow':
          return ['banana', 'pineapple'];
        case 'purple':
          return ['grape', 'plum'];
        default:
          return [];
      }
    }
    
    // test results
    test(null); // []
    test('yellow'); // ['banana', 'pineapple']

    对比:

    const fruitColor = {
      red: ['apple', 'strawberry'],
      yellow: ['banana', 'pineapple'],
      purple: ['grape', 'plum']
    };
    
    function test(color) {
      return fruitColor[color] || [];
    }

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

    例子:

    const fruits = [
        { name: 'apple', color: 'red' },
        { name: 'banana', color: 'yellow' },
        { name: 'grape', color: 'purple' }
      ];
    
    function test() {
      let isAllRed = true;
    
      // 条件:所有水果都是红色
      for (let f of fruits) {
        if (!isAllRed) break;
        isAllRed = (f.color == 'red');
      }
    
      console.log(isAllRed); // false
    }

    对比:

    const fruits = [
        { name: 'apple', color: 'red' },
        { name: 'banana', color: 'yellow' },
        { name: 'grape', color: 'purple' }
      ];
    
    function test() {
      const isAllRed = fruits.every(f => f.color == 'red');
    
      console.log(isAllRed); // false
    }

    或者:

    const fruits = [
        { name: 'apple', color: 'red' },
        { name: 'banana', color: 'yellow' },
        { name: 'grape', color: 'purple' }
    ];
    
    function test() {
      // 条件:任何一个水果是红色
      const isAnyRed = fruits.some(f => f.color == 'red');
    
      console.log(isAnyRed); // true
    }

    本文内容来自:https://mp.weixin.qq.com/s/mbfnC5SftGw4SR9rQ-R0iQ

  • 相关阅读:
    kibana 版本kibana-4.3.1 修改地图
    安装GeoIP数据库
    获取nginx ip地理信息
    数据接口示例
    elasticsearch 搜索不支持单词的部分进行匹配
    5,扩展方案
    (?m)使用实例
    Oracle 唯一主键引发的行锁
    场景2 nginx 错误日志格式:
    POSTGRESQL NO TABLE
  • 原文地址:https://www.cnblogs.com/chao202426/p/13743686.html
Copyright © 2011-2022 走看看