javascript闭包函数的用法
usage of javascript closure function
我想弄清楚如何使用闭包函数。在单击事件中,我想确定parm1
和parm2
的值,并将它们显示在div中,然后用SQL语句将新值更新到表中。
如果用户重复单击,我想节流(debounce),只在用户停止单击后5秒执行SQL更新。但是,parm1
和parm2
应该在每次点击时显示。
我不确定如何将parms传递给SQL进程。
(function() {
// create debounced function
var d_process = $.debounce(SQLprocess, 5000);
$('#myButton').click(function() {
// determine parameters
var parm1 = 1 + 1; // edit: added var
$(".div_1").text(parm1);
var parm2 = 2+2; // edit: added var
$(".div_2").text(parm2);
d_process();
});
}());
function SQLprocess(parm1, parm2) {
//perform an SQL update
}
参考:http://code.google.com/p/jquery-debounce/
将带有参数的SQLprocess传递给debounce函数,修改如下:
var d_process = $.debounce(SQLprocess, 5000);
:
var d_process = $.debounce(function() {SQLprocess(parm1, parm2)}, 5000);
这创建了一个匿名函数,没有传递给debounce的参数。但是这个匿名函数用正确的参数调用SQLprocess。
有人问为什么你不能这样做:
var d_process = $.debounce(SQLprocess(parm1, parm2), 5000);
答案是因为,在Javavscript语言中,SQLprocess(parm1, parm2)
是一个函数调用。它将立即执行该函数并将返回值传递给$.debounce()
,这不是您想要的。$.debounce
期待一个没有参数的函数,所以这就是你必须传递的。获得SQLprocess
参数的方法是将其封装在一个没有参数的函数中。它不一定是一个匿名函数。如果你愿意,也可以像这样使用命名函数:
function myFunctionWrapper() {
SQLprocess(parm1, parm2);
}
var d_process = $.debounce(myFunctionWrapper, 5000);
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 将函数的上下文应用于javascript变量
- 如何在JavaScript中将字符串转换为函数引用
- 用嵌套函数和默认函数定义函数
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- 无法导出函数expressjs/requestjs中的变量
- Javascript函数的多种用法
- 在 Promise 调用的错误函数回调后附加对象的用法是什么
- 如何通过函数调用查找 JavaScript 变量的传递用法
- 了解 JavaScript 函数的用法
- 在调用函数时不熟悉方括号的用法
- Node js调用socket.io函数的用法
- Javascript回调函数的用法
- javascript匿名函数评估习惯用法
- javascript闭包函数的用法
- Jquery插件函数参数用法
- Javascript函数名vs函数字面量用法
- 自定义RequireJS require()函数的用法
- 有人能解释一下howtonode的函数包装习惯用法吗?
- jQuery绑定函数和(this)用法