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

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

  });

  })

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