随笔记:达夫设备(Duff‘s Device)学习

随笔记:达夫设备(Duff’s Device)学习

今天是2022年1月9号星期日,从郑州回来杭州的第六天,已经在集中隔离点的第五天。怎么说呢,既倒霉又幸运!

今天在看《高性能JavaScript》一书,学习到了关于“达夫设备”的知识,记录一下吧!

  1. 达夫设备(Duff’s Device)

    1. 定义:是一种用来限制循环迭代次数的模式。

    2. 示例

       <script>
              var items = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];
              var iterations = Math.floor(items.length / 8),
                  startAt = items.length % 8,
                  i = 0,
                  times = 0;
              do {
                  switch (startAt) {
                      case 0:
                          console.log(items[i++]);
                      case 7:
                          console.log(items[i++]);
                      case 6:
                          console.log(items[i++]);
                      case 5:
                          console.log(items[i++]);
                      case 4:
                          console.log(items[i++]);
                      case 3:
                          console.log(items[i++]);
                      case 2:
                          console.log(items[i++]);
                      case 1:
                          console.log(items[i++]);
                  }
                  /* 
                      没有break 不会跳出循环,所以startAt为0,意思是执行8次
                      【注】startAt 余数:表示第一次循环中,switch内执行的位置
                  */
                  startAt = 0;
                  times++;
                  console.log('总共循环了'+times+'次');
              } while (iterations--);
          </script>
      
    3. 达夫设备,设计的基本理念

      1. 每次循环中最多和执行8次。
      2. 变量startAt用来存放余数,表示第一次循环中调用多少次。

只要自己诚心待人,别人也才能对自己以诚相待。如此重大的生活经验,对于一个刚入世的青年来说,是要比赚许多钱更为重要的。—《平凡的世界》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值