官术网_书友最值得收藏!

Questions

2.1. No extra variables: Our functional implementation required using an extra variable, done, to mark whether the function had already been called. Not that it matters... but could you make do without using any extra variables? Note that we aren't telling you not to use any variables; it's just a matter of not adding any new ones, such as done, and only as an exercise!

2.2. Alternating functions: In the spirit of our onceAndAfter() function, could you write an alternator() higher-order function that gets two functions as arguments, and on each call, alternatively calls one and another? The expected behavior should be as in the following example:

     let sayA = () => console.log("A");
let sayB = () => console.log("B");

let alt = alternator(sayA, sayB);
alt(); // A
alt(); // B
alt(); // A
alt(); // B
alt(); // A
alt(); // B

2.3. Everything has a limit!: As an extension of once(), could you write a higher-order function thisManyTimes(fn,n) that would let you call the fn() function up to n times, but would afterwards do nothing? To give an example, once(fn) and thisManyTimes(fn,1) would produce functions that behave in exactly the same way.

主站蜘蛛池模板: 乐业县| 桂东县| 凤阳县| 高淳县| 南华县| 曲阳县| 泰安市| 上高县| 沙坪坝区| 新昌县| 平泉县| 布尔津县| 平和县| 峨山| 庆城县| 金阳县| 赤峰市| 岳普湖县| 阜平县| 丹巴县| 文成县| 铜川市| 宾阳县| 平泉县| 洪泽县| 苍梧县| 芷江| 昔阳县| 屯昌县| 仁怀市| 凤翔县| 咸宁市| 莱州市| 万年县| 靖安县| 桐乡市| 沂源县| 阿拉善右旗| 黄山市| 嘉义县| 德安县|