javascript 函数作为参数名

以函数操作参数名,请问,如果函数本身就有参数的,那该如何传递?请给出一个简单的例子上面打错字了,应该是:以函数名作为参数,请问,如果函数本身就有参数的,那该如何传递?如果... 以函数操作参数名,请问, 如果函数本身就有参数的, 那该如何传递?
请给出一个简单的例子
上面打错字了,
应该是: 以函数名作为参数,请问, 如果函数本身就有参数的, 那该如何传递?
如果,参数的个数是可变的,能实现吗?
展开
 我来答
马后雷鼓下扬州5058
2013-05-16 · TA获得超过4321个赞
知道小有建树答主
回答量:693
采纳率:33%
帮助的人:800万
展开全部

你可以直接传递函数名作为参数,只是不要加括号


function funcOne(str) {
    alert(str);
}
    
// 这里传过来 funcName 为 funcOne, param 为 funcOne 的参数
function funcTwo(funcName, param) {
    // 等于调用 funcOne("hello")
    funcName(param);
}
    
// 调用 funcTwo 函数
// 将函数 funcOne 作为参数传递给 funcTwo
funcTwo(funcOne, "hello");
追问
如果,参数的个数是可变的,能实现吗?
追答
可以,在函数内使用 arguments 获取参数,然后使用 apply 调用函数

// 这里不需要填参数,因为在函数内可以使用 arguments 获取参数
function funcOne() {
// 这里使用 arguments 获取全部参数
// 处理、、、arguments[0], arguments[1], arguments[2]
// 或者循环 arguments 进行处理
}

// 这里不需要填参数,因为在函数内可以使用 arguments 获取参数
function funcTwo() {

// 参数 0 为函数名
var func = arguments[0];

// 剩余的参数为需要传递给 funcOne 的参数
var args = Array.prototype.slice.call(arguments, 1);

// 调用函数,并传递所有参数
func.apply(this, args);
}

// 这里的参数长度可以为任意,类型可以为任意
funcTwo(funcOne, "hello", "world", "foo", "bar");
百度网友08a61832
2013-05-16 · TA获得超过739个赞
知道小有建树答主
回答量:178
采纳率:100%
帮助的人:82.9万
展开全部
函数作为参数有两种。。
第一种将涵数的返回值做为另一个涵数的参数。。看下面的例子
function demo(a,b){
return a+b;

}
function test(one){
return one+2;

}

//调用涵数demo 并且将test涵数的返回值作为demo涵数的第一个参数,
//在这里test涵数的返回值为:放5传到test涵数中去。返回值为7,再将7和8传到demo涵数中。
//返回值就为15

var result=demo(test(5),8);
alert(result); //弹出15

//第二种将涵数体作为另一个涵数的参数
function sum(a,b){
return a(b); //在这里如果第一个参数为涵数所以我们就可以直接把a当作一个涵数来处理

}
function one(n){
return n+10;

}

//调用sum涵数将涵数one作为sum涵数的第一个参数
var r=sum(one,10);
//这里one是sum的的参数,又是一涵数。。one涵数在sum涵数时的作用是处理sum涵数的第二个参数,sum涵数的结果所以会把10传到one涵数内返回。结果为20
alert(r); //弹出结果20
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
润晨雨
2013-05-16 · 超过46用户采纳过TA的回答
知道小有建树答主
回答量:96
采纳率:0%
帮助的人:113万
展开全部
简单的举个例子。测试环境 win7+ie8+chrome
<script type="text/javascript">
function Add(x,y) {
alert(x + y);
}
function Sub(x,y) {
alert(x - y);
}
function CallFunc(Fun,x,y) {
if (Fun && (typeof Fun == "function")) {
if (x && y && (typeof x == "number") && (typeof y == "number")) {
Fun(x,y);
}else {
console.log(typeof x);
}

}else {

}
}

CallFunc(Sub,5,3);
</script>
追问
如果,参数的个数是可变的,能实现吗?
追答
可以用arguments来实现。

function Test() {
for (var i = 0; i < arguments.length; i++) {
alert(arguments[i]);
}
}

Test(1, 2, 3, 45, 6);
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xx7760e5
2013-05-16 · TA获得超过365个赞
知道小有建树答主
回答量:255
采纳率:100%
帮助的人:174万
展开全部

我的理解吧,把1个函数做参数就是把这个函数整体作为1个对象来用,而你的操作只是在主函数body中调用这个对象而已。我以前这么用是在做异步的时候需要在返回数据后调用方法,因为操作可能不一样,所以传函数,大致就如下面这个。

var fun1 = function(a,b){
    alert(a+b);
}
var fun = function(fun1){
    //此处你可以调用fun1
    fun1(1,2);
}
追问
如果,参数的个数是可变的,能实现吗?
追答
可以吧,我只知道,function(param1,param2,param3){},类似这种多个参数的,你在调用时可以按顺序,只写其中几个参数或不写都可以调用的。如果是在fun1中参数不确定,你可以单独封装1个对象,把你的所有参数作为属性动态的赋给封装的那个对象,然后把封装的对象当参数传过去。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jonggers
2013-05-16 · TA获得超过846个赞
知道小有建树答主
回答量:497
采纳率:0%
帮助的人:543万
展开全部
可以这样子:
function aaa(ar){
//这里是函数执行代码

}

传参这样传:
function bbb(aaa,ar){ //aaa为上面的函数, ar为要为它传入的参数

aaa(ar); //执行aaa函数

}
追问
如果,参数的个数是可变的,能实现吗?
追答
什么都可以啊,关键是你aaa()函数里的代码怎么写,只要里面的代码没问题,那肯定没问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式