题目 once 描述 _.once(func)可以用来缓存结果使得原函数至多被调用一次。
能否自己实现一个once()
?
function func(num) {
return num
}
const onced = once(func)
onced(1)
// 1
onced(2)
// 1,因为已经调用过了,前一次的结果被直接返回
答案
function once(func) {
let flag = Symbol();
let pre = flag;
return function (...rest) {
if (pre == flag) {
return pre = func.apply(this, rest);
} else {
return pre;
}
}
}