首页 > 代码库 > 设计一个函数,它接受不定数量的参数,这是参数都是函数。这些函数都接受一个回调函数作为参数,按照回调函数被调用的顺序返回函数名

设计一个函数,它接受不定数量的参数,这是参数都是函数。这些函数都接受一个回调函数作为参数,按照回调函数被调用的顺序返回函数名

        function acceptFuncs() {
            var fnNames = []; //定义数组字面量,用来保存函数名称

            for (var i = 0; i < arguments.length; i++) { //for循环检测接收到的每个参数是否为函数,是则传递回调函数给它,最后所结果压入数组中
                if (typeof arguments[i] === "function") { 
                    fnNames.push(arguments[i](callback));
                }
            }
            for (var i = 0; i < fnNames.length; i++) { //逐个打印函数名称
                alert(fnNames[i]);
            }
        }
        
        //回调函数,返回调用它的母函数的函数名称
        function callback() { 
           return arguments.callee.caller.name;
        }

        //测试函数
        function test1(fn1) {
            if (typeof fn1 === "function")
                return fn1();
        }

        function test2(fn1) {
            if (typeof fn1 === "function")
                return fn1();
        }

        function test3(fn1) {
            if (typeof fn1 === "function")
                return fn1();
        }

        //调用测试
        acceptFuncs(test1,test2,test3);

 

别人提的问题,试着答了下,测试成功:

 

设计一个函数,它接受不定数量的参数,这是参数都是函数。这些函数都接受一个回调函数作为参数,按照回调函数被调用的顺序返回函数名