我将一个函数(本身有一个参数)作为参数传递给另一个函数以及如何获取参数
I passed a function(which itself has a parameter) as a parameter into another function and how to get the parameter
>我将一个函数(它本身有一个参数,比如说para)作为参数传递给另一个函数函数b()以及如何获取参数para。
这是一个简单的例子
<input type="button" onclick="sometest3()" value="Run test">
<script>
function sometest3() {
// pass an anonymous function as a parameter which has
// its own parameter "client"
sometest('connection',function(client){client.getInfo();})
}
function sometest(eve,func) {
// get this function's parameter which is "client" and pass
// a reference of sometest2 to it. so in the callback I can use
client.getInfo();
}
function sometest2() {
this.getInfo=function (){alert("get it");};
}
</script>
您无法提供已发布的代码。传递给 sometest
的匿名函数被保存为局部变量,其范围之外的函数无法访问该变量。
如果你想让sometest
访问client
,你必须传递它,下面使用局部变量:
function sometest3() {
var client = {getInfo: function(){ /* whatever */}};
sometest('connection', function(client){client.getInfo();}, client);
}
function sometest(eve, func, client) {
// The client object has been passed from sometest3
func(client);
}
或者,您可以在闭包或全局变量或两个函数可访问的某个对象的属性(本质上是相同的事物)中使其可用于两个函数。您的选择。
例如,使用闭合:
var foo = (function() {
var client = {getInfo: function(){ /* whatever */}};
return {
sometest3: function() {
foo.sometest('connection', function(obj){obj.getInfo();}, client);
},
sometest: function(eve, func, client) {
// The client object has been passed from sometest3
func(client);
}
};
}());
然后称它为 foo.sometest3()
.
编辑
已添加呼叫
如果你想知道一个函数中有多少个参数被命名func
你可以检查func.length
。当然,这并不意味着你不能将更多或更少的参数传递给该函数,而只能传递其中有多少参数存储在局部范围的变量中。
但是,如果您想知道这些变量的名称,最好的办法是将函数转换为字符串并获取其声明:
var parms = String(func)
.match(/function[^'(]*'(([^')]*)/)[1]
.split(/'s*,'s*/);
(请注意,在 function
关键字及其声明之间放置注释可能会弄乱此方法。
话虽如此,我看不出这对你有什么用......
相关文章:
- 函数参数中的数据与指定变量之间的任何性能差异
- AngularJS:我可以跳过函数参数回调吗
- 为什么不'我们在javascript中使用函数参数的数据类型
- 使用闭包共享构造函数参数
- 函数参数的值错误
- 当一个重要的构造函数参数丢失时应该发生什么
- 阻止ReSharper将JavaScript函数参数放到新行中
- 根据函数参数将CSS值存储在var中,然后对其进行操作
- 使构造函数参数具有ES6类方法的特权
- 当客户端将两个按钮的javascript函数参数修改为相同时,SQL/PHP会更新多行
- Windows.Networking.EndpointPair构造函数参数
- 是否可以使用Sinon.JS检查函数参数绑定是否正确
- 大括号中的Javascript函数参数
- jQuery 无法使用 AJAX 调用访问函数内部的函数参数
- 将JSON字符串转换为函数参数
- eval()读取函数参数有多糟糕
- Javascript不能在一个命令中使用函数参数
- 函数参数在内部不可见,返回新的Promise(函数(resolve,reject).传递给被promise化的函数的
- ES6类构造函数参数
- 是否可以在javascript函数参数列表中调用多个函数