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

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.

主站蜘蛛池模板: 石楼县| 大兴区| 武安市| 远安县| 北流市| 民权县| 胶南市| 十堰市| 泸定县| 新泰市| 仁化县| 台山市| 天台县| 怀安县| 彭山县| 凤山市| 马山县| 集安市| 大邑县| 余姚市| 新兴县| 蓝田县| 抚松县| 临朐县| 天水市| 临朐县| 绥江县| 静乐县| 福贡县| 营口市| 屏东市| 明水县| 博爱县| 永顺县| 新化县| 黄石市| 南昌市| 洪江市| 政和县| 新昌县| 连云港市|