
一、帮精首先写一段求阶乘的段的进函数
用 memozation实现一段factorial
> var cache = { }; > > function factorial(x) { ... if (x < 2) return 1; ... if (!(x in cache)) { ..... cache[x] = x * factorial(x - 1); ..... } ... return cache[x]; ... } > factorial(8) 40320 > cache { 2: 2, 3: 6, 4: 24, 5: 120, 6: 720, 7: 5040, 8: 40320 } 此处 cache 只用于函数 factorial 之内,却过分暴露于外。源码下载函数化史按照 least exposure(POLE) 将其隐藏起来。帮精直觉方法就是段的进直接将其放入其中。亿华云
二、函数化史初步解决接口过分暴露的帮精问题
重新定义最外层coverTheCache函数将其包裹起来。
> function coverTheCache() { ... // "middle scope",段的香港云服务器进 where we cover `cache` ... var cache = { }; ... ... return factorial; ... ... //