使用闭包对setTimeout进行简单封装避免出错


Posted in Javascript onJuly 10, 2013

在写js脚本时,经常会用到一些拼写函数的情况,例如调用setTimeout

var msgalert="test"; 
function TestAlert(msg) 
{ 
alert(msg) 
} $(document).ready(function () { 
$("#btnCancel").click(function (e) { 
setTimeout("TestAlert("+msgalert+")",1000); 
}); 
})

查了很长时间,为什么就是弹不出对话框呢。检查了很长时间才发现,原来是少了一对单引号
$(document).ready(function () { 
$("#btnCancel").click(function (e) { 
setTimeout("TestAlert('"+msgalert+"')",1000); 
}); 
})

这样的写法容易出错,还不容易检查出错误,如果使用闭包就可完全避免,改写如下
var msgalert="test"; 
function dalayAlert(msg ,time){ 
setTimeout( 
TestAlert(msg), 
time 
); 
} 
function TestAlert(msg) 
{ 
alert(msg) 
} $(document).ready(function () { 
$("#btnCancel").click(function (e) { 
dalayAlert(msgalert,1000) 
}); 
})

由于使用了闭包,也简单了很多,检查错误也很容易了
Javascript 相关文章推荐
Cookie 注入是怎样产生的
Apr 08 Javascript
超越Jquery_01_isPlainObject分析与重构
Oct 20 Javascript
教你如何在 Javascript 文件里使用 .Net MVC Razor 语法
Jul 23 Javascript
将数字转换成大写的人民币表达式的js函数
Sep 21 Javascript
纯jquery实现模仿淘宝购物车结算
Aug 20 Javascript
VueJS组件之间通过props交互及验证的方式
Sep 04 Javascript
jQuery实现IE输入框完成placeholder标签功能的方法
Sep 20 jQuery
在vue-cli搭建的项目中增加后台mock接口的方法
Apr 26 Javascript
使用JavaScript破解web
Sep 28 Javascript
微信小程序购物车、父子组件传值及calc的注意事项总结
Nov 14 Javascript
vue+element tabs选项卡分页效果
Jun 29 Javascript
如何基于layui的laytpl实现数据绑定的示例代码
Apr 10 Javascript
js Map List 遍历使用示例
Jul 10 #Javascript
JS getAttribute和setAttribute(取得和设置属性)的使用介绍
Jul 10 #Javascript
JS下拉框内容左右移动效果的具体实现
Jul 10 #Javascript
解析dom中的children对象数组元素firstChild,lastChild的使用
Jul 10 #Javascript
关于js遍历表格的实例
Jul 10 #Javascript
js浮动图片的动态效果
Jul 10 #Javascript
JS文本框默认值处理详解
Jul 10 #Javascript
You might like
一个php Mysql类 可以参考学习熟悉下
2009/06/21 PHP
php设计模式 DAO(数据访问对象模式)
2011/06/26 PHP
php 抽象类的简单应用
2011/09/06 PHP
php 批量添加多行文本框textarea一行一个
2014/06/03 PHP
php实现的IMEI限制的短信验证码发送类
2015/05/05 PHP
php根据生日计算年龄的方法
2015/07/13 PHP
一个JS小玩意 几个属性相加不能超过一个特定值.
2009/09/29 Javascript
jcarousellite.js 基于Jquery的图片无缝滚动插件
2010/12/30 Javascript
JavaScript Memoization 让函数也有记忆功能
2011/10/27 Javascript
jquery实现勾选复选框触发事件给input赋值
2015/02/01 Javascript
阻止表单提交按钮多次提交的完美解决方法
2016/05/16 Javascript
Angularjs使用directive自定义指令实现attribute继承的方法详解
2016/08/05 Javascript
js实现hashtable的赋值、取值、遍历操作实例详解
2016/12/25 Javascript
Angular.js中angular-ui-router的简单实践
2017/07/18 Javascript
新手vue构建单页面应用实例代码
2017/09/18 Javascript
基于openlayers4实现点的扩散效果
2020/08/17 Javascript
Vue路由切换时的左滑和右滑效果示例
2018/05/29 Javascript
微信小程序非跳转式组件授权登录的方法示例
2019/05/22 Javascript
小程序如何在不同设备上自适应生成海报的实现方法
2019/08/20 Javascript
使用layui监听器监听select下拉框,事件绑定不成功的解决方法
2019/09/28 Javascript
在Layui中操作数据表格,给指定单元格添加事件示例
2019/10/26 Javascript
[05:29]2014DOTA2国际邀请赛 赛后专访:LGDNewbee顺利过关
2014/07/13 DOTA
PHP webshell检查工具 python实现代码
2009/09/15 Python
Python的Django框架中的数据库配置指南
2015/07/17 Python
使用numba对Python运算加速的方法
2018/10/15 Python
Python英文文本分词(无空格)模块wordninja的使用实例
2019/02/20 Python
Django模板语言 Tags使用详解
2019/09/09 Python
Python简单实现区域生长方式
2020/01/16 Python
TensorFlow tf.nn.conv2d_transpose是怎样实现反卷积的
2020/04/20 Python
Python+PyQt5实现灭霸响指功能
2020/05/25 Python
Python 利用argparse模块实现脚本命令行参数解析
2020/12/28 Python
怎样声明子类
2013/07/02 面试题
基层党组织公开承诺书
2014/03/28 职场文书
红十字会救护培训简讯
2015/07/20 职场文书
五星级酒店宣传口号
2015/12/25 职场文书
postgreSQL数据库基础知识介绍
2022/04/12 PostgreSQL