使用闭包对setTimeout进行简单封装

来源:互联网 发布:list去除重复数据 编辑:程序博客网 时间:2024/05/17 02:28

在写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)    });})

由于使用了闭包,也简单了很多,检查错误也很容易了