面试之 闭包 return

Posted 菜鸟向大牛进发

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面试之 闭包 return相关的知识,希望对你有一定的参考价值。

https://blog.csdn.net/FE_dev/article/details/74124373

经典面试题解释

 

return 函数 ,在()之后才会执行

请定义这样一个函数

function repeat (func, times, wait) {

}

这个函数能返回一个新函数,比如这样用

var repeatedFun = repeat(alert, 10, 5000)

调用这个 repeatedFun ("hellworld")

会alert十次 helloworld, 每次间隔5秒

解答

/**

 * 第一题

 * @param func

 * @param times

 * @param wait

 * @returns {repeatImpl}

 */

function repeat (func, times, wait) {

    //不用匿名函数是为了方便调试

    function repeatImpl(){

        var handle,

            _arguments = arguments,

            i = 0;

        handle = setInterval(function(){

            i = i + 1;

            //到达指定次数取消定时器

            if(i === times){

                clearInterval(handle);

                return;

            }

            func.apply(null, _arguments);

        },wait);

    }

    return repeatImpl;

}

//测试用例

var repeatFun = repeat(alert, 4, 3000);

repeatFun("hellworld");

/**

 

以上是关于面试之 闭包 return的主要内容,如果未能解决你的问题,请参考以下文章

面试必问之闭包

经典js闭包----对《大部分人都会做错的经典JS闭包面试题》的理解

前端面试题之手写promise

你不一定能做对的JavaScript闭包面试题

闭包

js闭包面试题目