<style type="text/css">
#a1{
background:url(img/Alaphabet-d.jpg);
background-repeat:no-repeat;
background-position:0px -0px;
height:210px;
width:210px;
}
这个css 显示一副大图(字母表)的一部分(每个字母)
用 javascript 控制显示
有两种写法
第一种写法,是我的写法,传参进入 setInterval 中,直接返回一个带参数的函数
function change1(x_i){
if(document.styleSheets[0].cssRules){
document.styleSheets[0].cssRules[0].style["background-position"]="-0px -"+String(215*x_i)+"px";
}
}
function load(){
var i=0;
setInterval(function(){i++;j++; if(i==5) i=0;if(j==5) j=0; change(i,j);},2000);
第二种写法,很有意思
javascript 是异步执行,把所有函数都扔到一个堆栈里,顺序执行
function change1(x_i){
if(document.styleSheets[0].cssRules){
document.styleSheets[0].cssRules[0].style["background-position"]="-0px -"+String(215*x_i)+"px";
}
}
function load(){
var i=0; j=2;
for(i=0;i<50;i++){
(
function(){var j=i;setTimeout(function(){change1(j%5);},1000*j); } )();
}
}
这个红色字体为什么不能写成下面呢?
var j=i;
setInterval(function(){change1(j%5);},2000);
因为不用闭包包起来,就不能形成自己的作用域,j 值就是变化的
为什么不能写成下面这样呢?
(function(){var j=i;setTimeout(function(){change1(i%5);},1000*j); } )();
首先用 function(){ }() 括起来,就形成了一个自己的域
用j=i ,在此域内获得i 值, 堆栈中的值是存入每次变化的参数
如果直接传参数为i
程序会首先执行完循环, 把函数扔到堆栈中,然后拿出来执行,当执行的时候,i 已经循环结束,为循环最后一个值, 这时候所有的函数参数都一样的
分享到:
相关推荐
Javascript闭包与函数柯里化浅析_.docx
闭包是ECMAScript (JavaScript)最强大的特性之一,但用好闭包的前提是必须理解闭包。闭包的创建相对容易,人们甚至会在不经意间创建闭包,但这些无意创建的闭包却存在潜在的危害,尤其是在比较常见的浏览器环境下...
JavaScript闭包 JavaScript闭包 JavaScript闭包 JavaScript闭包
Javascript中有几个非常重要的语言特性——对象、原型继承、闭包。其中闭包 对于那些使用传统静态语言C/C++的程序员来说是一个新的语言特性。本文将以例子入手来介绍Javascript闭包的语言特性,并结合一点 ...
学习javascript闭包函数的实用文档,讲解全面、详细。pdf格式,
闭包和柯里化都是JavaScript经常用到而且比较高级的技巧,所有的函数式编程语言都支持这两个概念,因此,我们想要充分发挥出JavaScript中的函数式编程特征,就需要深入的了解这两个概念,闭包事实上更是柯里化所不可...
主要介绍了JavaScript闭包函数访问外部变量的方法,本文使用匿名函数来实现在闭包中访问外部变量,需要的朋友可以参考下
Javascript 闭包完整解释
闭包和立即执行函数一、闭包二、闭包的作用三、闭包形式四、立即执行函数五、使用环境六、小练习 一、闭包 当a函数已经执行完了,b函数才开始。 原创文章 10获赞 3访问量 453 关注 私信 展开阅读全文 作者:...
深度探讨javascript函数的原型链和闭包
闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。
资源名称:javascript闭包详解 中文word版 内容简介: Javascript中有几个非常重要的语言特性——对象、原型继承、闭包。其中闭包 对于那些使用传统静态语言C/C 的程序员来说是一个新的...
通过将闭包视为核心语言构件的组成部分,JavaScript语言展示了其与函数式编程语言的紧密联系。由于能够简化复杂的操作,闭包在主流JavaScript库以及高水平产品代码中日益流行起来。 一、变量的作用域 在介绍闭包...
4) 计算函数依赖的闭包。此步骤不作要求,但要会方法。个人总结:将所有属性元素组成一个集合(域)记为R;求R的所有子集(要用到第二步中的全排列~~~),设其中一个为Ri;对每一个子集求其闭包,记为Ri+;然后求Ri...
闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。 闭包有三个特性: 1.函数嵌套函数; 2.函数内部可以引用外部的参数和变量; 3.参数和变量不会被垃圾回收机制回收。 ...
深入理解javascript原型和闭包(01)——一切都是对象 深入理解javascript原型和闭包(02)——函数和对象的关系
javaScript闭包技术资料
匿名函数,也称为拉姆达函数,是一种使用JavaScript...JavaScript中的匿名函数和闭包都是非常有用的特性,利用它们可以实现很多功能。不过,因为创建闭包必须维护额外的作用域,所以过度使用它们可能会占用大量内存。
javascript 闭包实例下载
主要帮助大家轻松学习掌握Javascript闭包函数,从闭包的含义出发,由浅入深学习Javascript闭包函数,感兴趣的小伙伴们可以参考一下