比如这个闭包,f1执行后,返回匿名函数,而匿名函数又不执行,那这个闭包还有用吗? timer会执行吗
function f1(fn,delay){
let timer = null
return function () {
if(timer){
clearTimeout(timer)
}
timer = setTimeout(fn,delay)
}
}
比如这个闭包,f1执行后,返回匿名函数,而匿名函数又不执行,那这个闭包还有用吗? timer会执行吗
function f1(fn,delay){
let timer = null
return function () {
if(timer){
clearTimeout(timer)
}
timer = setTimeout(fn,delay)
}
}
10 回答11.2k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
比如你定义的f1这个函数,如果不用闭包,就需要在外面定义一个timer,这样的话timer就不是私有的了。
定义了匿名函数不执行,比如let f=f1(()=>{console.log(1)},1000),这时候的f得到是指向f1返回函数的指针,自然不会去执行返回函数里的内容。
你可以试试执行这个:
如果不调用返回的函数就能执行,最后会打印aaaa和ssss,但是最后其实只打印了ssss,说明不执行就不会调用。