如何向回调函数中传入其他参数
如何向回调函数中传参数
最近写 JS 经常会因为向回调函数中传参而头疼,今天总结一下向回调函数中传参
的方法,以后的应用中就不用在到处去找了。
首先构建一个需要向回调函数中传入参数的典型应用。在一个页面中产生了一系列
的向 Ajax Proxy 的请求,传入的是一个 ID,根据 ID 返回了不同的内容值,我们需
要把这些内容打印在页面上,同时给页面元素赋予 ID,这个时候就需要向回调函
数中传入 ID,以产生带 ID 的页面元素。
第一种方法就是使用全局变量,能够被函数和回调函数同时访问。这种方法虽然不
够优雅,但是确实能够完成任务。
这种方法在传入单个的变量时没什么问题,但是当我们在一个循环的结构中,不断
的传入变量到回调函数,这个时候传入的变量会采用最后一次传入的变量值,这就
与我们预想的结果有了出入。
第二种办法是使用 Closure,这种方法更加优雅一些。通过使用 Closure,我们通过
匿名函数来重新包装返回的对象,同时将需要传入的参数做为新的属性传给回调函
数。
第三种方法假设你需要为你的回调函数使用不同的签名,例如 Ajax.Net 的专家们
允许你在回调中使用额外的参数,如果你想从一个换到另外一个并且保持兼容性的
话,就要用到下面的写法:
第四种办法其实就是 Closure 的一种变体,你不需要显示的声明一个回调函数,而
是使用一个匿名函数直接进行你所需要的处理。
如何向回调函数中传参数