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

Posted sx00xs

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计一个函数,它接受不定数量的参数,这是参数都是函数。这些函数都接受一个回调函数作为参数,按照回调函数被调用的顺序返回函数名相关的知识,希望对你有一定的参考价值。

        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);

 

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

 

以上是关于设计一个函数,它接受不定数量的参数,这是参数都是函数。这些函数都接受一个回调函数作为参数,按照回调函数被调用的顺序返回函数名的主要内容,如果未能解决你的问题,请参考以下文章

Golang "..."用法

C++中有时候看到参数中有...,这是啥意思?怎么用?

PHP 函数可以接受无限数量的参数吗? [复制]

Python 构造一个可接受任意数量参数的函数

golang中不定参数与数组切片的区别

你能写一个可以接受任意数量参数的 c# 装饰器函数吗?