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

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

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

时间: 2024-12-02 09:13:31

使用闭包对setTimeout进行简单封装避免出错_javascript技巧的相关文章

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

在写js脚本时,经常会用到一些拼写函数的情况,例如调用setTimeout 复制代码 代码如下: var msgalert="test"; function TestAlert(msg) { alert(msg) } $(document).ready(function () { $("#btnCancel").click(function (e) { setTimeout("TestAlert("+msgalert+")",

Php Mssql操作简单封装支持存储过程_php技巧

复制代码 代码如下: <?php /* * class :Mssql * time :2009-12-10 * author :Libaochang * version :1.0b * description :mssql database access class,it can execute the procedur or sql */ class MssqlUtil { var $user = null; //database user name var $keys = null; //d

Javascript对象中关于setTimeout和setInterval的this介绍_javascript技巧

在Javascript里,setTimeout和setInterval接收第一个参数是一个字符串或者一个函数,当在一个对象里面用setTimeout延时调用该对象的方法时 复制代码 代码如下: function obj() { this.fn = function() { alert("ok"); console.log(this); setTimeout(this.fn, 1000);//直接使用this引用当前对象 } } var o = new obj(); o.fn(); 然后

JavaScript 高级篇之闭包、模拟类,继承(五)_javascript技巧

一.javascript中的闭包 1.我们一起先来理解什么是函数的作用域. 2.调用的对象 结合例子: 复制代码 代码如下: function display(something) { function executeDisplay1() { document.write("我在帮老板打印:"+something+"<br />");//引用外部函数的something参数 } executeDisplay1();//函数display引用了内部函数 }

js简单倒计时实现代码_javascript技巧

本文实例讲述了js简单倒计时实现代码.分享给大家供大家参考,具体如下: <div class="time"> 距离活动结束还有<span id="day"></span>天 <span id="hours"></span>小时 <span id="min"></span>分 <span id="sec"><

javascript面向对象包装类Class封装类库剖析_javascript技巧

javascript是个入门门槛很低的语言,甚至一个从来没有接触过javascript的技术人员,几小时内就可以写出一个简单有用的程序代码. 但是如果因此你就下结论:javascript是门简单的语言.那你就大错特错了.想写出高性能的代码,同样需要具备一个高级程序员的基本素养. 一个java或者c++程序员,不一定能写出高性能的javascript代码,但更容易写出高性能的javascript代码. javascript的简单是基于它"胸襟广阔"的包容性.它声明时,不需要指定类型,甚至

你知道setTimeout是如何运行的吗?_javascript技巧

大家看下如下代码,猜猜执行结果: var start = new Date; setTimeout(function(){ console.log('时间流逝了:'+(new Date - start)+'毫秒'); }, 200); while (new Date - start < 1000) {} console.log(1); function doSoming(){ setTimeout(function(){ console.log('时间又流逝了:'+(new Date - sta

javascript使用闭包模拟对象的私有属性和方法_javascript技巧

最近因为做了一个项目,其中涉及到了js私有方法,这个概念在其语言里面是很常见的,很多语言都有private这个关键字,只要在一个类的前面加上private就表示申明了一个私有方法,但是javascript在面向对象的方面没有那么多的特征,他没有专门的private关键字,.要做到这一点就必须使用js自己的一些特性来变相的完成. 首先javascript里面有一个高级特性叫闭包,简单的说js的闭包可以理解成是一种现象或者特性,一般出现在两个函数嵌套的情况下,看例子: function a(){ v

一个判断抢购时间是否到达的简单的js函数_javascript技巧

原型函数,功能很简单,找到时钟的id,计算数值,到达抢购时间时执行任务. function nwt() {var str=$('#deal_expiry_timer_e3cdcd2a').text(); var out=str.match(/\d+/g);console.log(out); var h=parseInt(out[0]),m=parseInt(out[1]),s=parseInt(out[2]); console.log(h+'#'+m+'#'+s);var calc=h*3600