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

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.

主站蜘蛛池模板: 巴彦淖尔市| 浦江县| 深泽县| 久治县| 白河县| 四川省| 米脂县| 禹州市| 金寨县| 长子县| 沙湾县| 吉隆县| 南召县| 霞浦县| 门源| 小金县| 固镇县| 巴楚县| 云浮市| 霍城县| 恩平市| 左云县| 莆田市| 张家界市| 葫芦岛市| 江门市| 迭部县| 额济纳旗| 高青县| 华坪县| 时尚| 锡林郭勒盟| 汉源县| 宝鸡市| 永昌县| 电白县| 广饶县| 宜丰县| 蛟河市| 博客| 巴马|