
闭包专题
2667. 创建 Hello World 函数
请你编写一个名为 createHelloWorld 的函数。它应该返回一个新的函数,该函数总是返回 “Hello World”。
示例 1:
输入:args = []
输出:”Hello World”
解释:
const f = createHelloWorld();
f(); // “Hello World”
createHelloWorld 返回的函数应始终返回 “Hello World”。
示例 2:
输入:args = [{},null,42]
输出:”Hello World”
解释:
const f = createHelloWorld();
f({}, null, 42); // “Hello World”
可以传递任何参数给函数,但它应始终返回 “Hello World”。
提示:
0 <= args.length <= 10
Solution
1 | /** |
2620. 计数器
请你编写并返回一个 计数器 函数,它接收一个整型参数 n 。这个 计数器 函数最初返回 n,每次调用它时返回前一个值加 1 的值 ( n , n + 1 , n + 2 ,等等)。
示例 1:
输入:
n = 10
[“call”,”call”,”call”]
输出:[10,11,12]
解释:
counter() = 10 // 第一次调用 counter(),返回 n。
counter() = 11 // 返回上次调用的值加 1。
counter() = 12 // 返回上次调用的值加 1。
示例 2:
输入:
n = -2
[“call”,”call”,”call”,”call”,”call”]
输出:[-2,-1,0,1,2]
解释:counter() 最初返回 -2。然后在每个后续调用后增加 1。
Solution
1 | /** |
2704. 相等还是不相等
请你编写一个名为 expect 的函数,用于帮助开发人员测试他们的代码。它应该接受任何值 val 并返回一个包含以下两个函数的对象。
toBe(val) 接受另一个值并在两个值相等( === )时返回 true 。如果它们不相等,则应抛出错误 “Not Equal” 。
notToBe(val) 接受另一个值并在两个值不相等( !== )时返回 true 。如果它们相等,则应抛出错误 “Equal” 。
示例 1:
输入:func = () => expect(5).toBe(5)
输出:{“value”: true}
解释:5 === 5 因此该表达式返回 true。
示例 2:
输入:func = () => expect(5).toBe(null)
输出:{“error”: “Not Equal”}
解释:5 !== null 因此抛出错误 “Not Equal”.
示例 3:
输入:func = () => expect(5).notToBe(null)
输出:{“value”: true}
解释:5 !== null 因此该表达式返回 true.
Solution
1 | /** |
2665. 计数器 II
请你写一个函数 createCounter. 这个函数接收一个初始的整数值 init 并返回一个包含三个函数的对象。
这三个函数是:
increment() 将当前值加 1 并返回。
decrement() 将当前值减 1 并返回。
reset() 将当前值设置为 init 并返回。
示例 1:
输入:init = 5, calls = [“increment”,”reset”,”decrement”]
输出:[6,5,4]
解释:
const counter = createCounter(5);
counter.increment(); // 6
counter.reset(); // 5
counter.decrement(); // 4
示例 2:
输入:init = 0, calls = [“increment”,”increment”,”decrement”,”reset”,”reset”]
输出:[1,2,1,0,0]
解释:
const counter = createCounter(0);
counter.increment(); // 1
counter.increment(); // 2
counter.decrement(); // 1
counter.reset(); // 0
counter.reset(); // 0
提示:
-1000 <= init <= 1000
总调用次数不会超过 1000
Solution
1 | /** |