随笔记:达夫设备(Duff’s Device)学习
今天是2022年1月9号星期日,从郑州回来杭州的第六天,已经在集中隔离点的第五天。怎么说呢,既倒霉又幸运!
今天在看《高性能JavaScript》一书,学习到了关于“达夫设备”的知识,记录一下吧!
-
达夫设备(Duff’s Device)
-
定义:是一种用来限制循环迭代次数的模式。
-
示例
<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>
-
达夫设备,设计的基本理念
- 每次循环中最多和执行8次。
- 变量startAt用来存放余数,表示第一次循环中调用多少次。
-
只要自己诚心待人,别人也才能对自己以诚相待。如此重大的生活经验,对于一个刚入世的青年来说,是要比赚许多钱更为重要的。—《平凡的世界》