- 浏览: 45395 次
- 性别:
- 来自: 株洲
文章分类
最新评论
再一次来谈谈javascript,发现现在网上大多数文章对于闭包的认识好像都是认为返回一个内部的函数这样一个标志才能认为是closure(闭包)。 也许有但是很是看到这样的文章能对javascript的闭包能有一个比较清晰地解释。下面我就来谈谈自己对javascript的闭包的看法,如有不对的地方欢迎大家批评一起学习。
首先,谈谈一个常见的需求。
有四个link,
<a href="#" class="mylink" id="0">1</a>
<a href="#" class="mylink" id="1">2</a>
<a href="#" class="mylink" id="2">3</a>
要求点击相应的链接弹出你点击的是第几个。
下面我给出几种实现方式
<html>
<head>
<title>sfsdf</title>
<script language="JavaScript" type="text/javascript">
//第一种实现方式是将局部变量obj,和i传递给外部函数,这样就可以保留局部变量---这应该就是闭包的主要作用保留局部
//变量
/*function newInit(){
for (var i = 1; i <= 3; i++) {
var obj = document.getElementById("a" + i);
alertfunction(obj, i);
}
}
function alertfunction(obj, i){
obj.onclick = function(){
alert(i);
}
}
*/
/*
第二种跟下面的是一样的,只是这里是对所有的标签进行取得
function newInit(){
var links=document.getElementsByTagName("a");
for (var i = 0; i < links.length; i++) {
var link=links[i];
link.onclick=function()
{
var row=i;//row保留局部变量i
return function()
{
alert(row);//弹出
}
}();//立即执行
}
}
*/
function newInit(){
for (var i = 0; i < 3; i++) {
var link = document.getElementById(i);
link.onclick = (function(){
var row = i;//保留变量
return function(){
alert(row);
}
})();
}
}
</script>
</head>
<body onload="newInit()">
<a href="#" class="mylink" id="0">1</a>
<a href="#" class="mylink" id="1">2</a>
<a href="#" class="mylink" id="2">3</a>
</body>
</html>
另外附上一段英文,对javascript闭包的总结
发表评论
-
javascirpt对象创建
2015-08-26 21:21 458javascript中的面向对象 理解js中的对象 最 ... -
react的学习总结
2015-06-10 11:51 1908React介绍(具体总结请参考附件chm,本文的chm版 ... -
抽取jquery源码实现获取元素的精确位置
2014-10-18 11:32 359获取元素准确位置的写法 知识点预备:getBounding ... -
jquery实现弹窗居中的简单效果
2014-10-18 09:24 928<!DOCTYPE html PUBLIC &quo ... -
javascript 基础知识零散汇总
2014-09-29 15:09 3341:数据类型判断 基础类型判断 Object.prot ... -
jquery jsonp参数编码问题不一致问题的解决方案
2014-09-27 23:06 3823<!doctype html> <ht ... -
javascript源对象于对象引用之前不得不说的事情
2014-09-13 17:05 318var source = {"a":3 ... -
sEMMET插件的最全快捷方式【来自Dash文档中心】
2014-09-11 10:44 483s -
仿淘宝放大镜效果
2014-09-11 00:31 388/* *知识点预备 clientX,clientY ... -
js--简单放大镜实现(带移动方块)
2014-09-11 00:22 680/* *知识点预备 clientX,clientY ... -
js+css自定义滚动条(包含滚动事件处理)
2014-08-31 12:11 493<!DOCTYPE html> <htm ... -
div+css(javascript)自定义滚动条
2014-08-31 10:07 281<!DOCTYPE html> <ht ... -
javascript--闭包彻底弄清楚
2014-08-27 10:09 327<!DOCTYPE html> ... -
JavaScript 闭包再探讨
2014-08-27 10:03 0<!DOCTYPE html> <htm ... -
JavaScript 闭包再探讨
2014-08-27 10:03 358<!DOCTYPE html> <htm ... -
javascript位置相关(一)---offset等测试
2014-08-17 21:19 432元素的offsetParent属性 : 只读 属性 离当前 ... -
javascript位置相关(二)--getBoundingClientRect
2014-08-17 21:17 549http://msdn.microsoft.com/en- ... -
setTimeout 使用
2014-08-17 18:22 348开门见山:众所周知,setTimeout ... -
setTimeout 0 使用
2014-08-17 18:03 392经常看到setTimeout延 ... -
前端知识点分享3--DOM操作
2014-07-28 22:27 485首先先要知道我们必须 ...
相关推荐
closure-compiler-npm, 用于管理和记录关闭编译器的包,通过npm使用 google-closure-compiler 用闭包编译器检查。编译。优化和压缩 Javascript这个库跟踪发布到 npmjs.org 和相关插件的相关问题。 任何与插件无关的...
JavaScript闭包(closure).pdf
闭包编译器是一个让javascript下载和运行更快的工具。它是一个真正的javascript编译器。它不是从源语言编译成机器代码,而是从javascript编译成更好的javascript。它解析你的javascript,分析它,删除死代码,重写并...
闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。
闭包编译器 Maven 插件 Maven 插件,用于使用 Google 的 Closure 编译器编译/压缩 JavaScript 代码
Javascript中有几个非常重要的语言特性——对象、原型继承、闭包。其中闭包 对于那些使用传统静态语言C/C++的程序员来说是一个新的语言特性。本文将以例子入手来介绍Javascript闭包的语言特性,并结合一点 ...
谷歌关闭编译器使用Closure-Compiler检查,编译,优化和压缩JavaScript 该存储库跟踪与发布到npmjs.org和相关插件有关的问题。 与插件本身无关的任何错误都应报告给。配套该编译器分布在多个平台上。 每个平台都是其...
Closure Compiler 是一个让 JavaScript 下载和运行速度更快的工具。 它是一个真正的 JavaScript 编译器。 它不是从源语言编译为机器代码,而是从 JavaScript 编译为更好的 JavaScript。 它解析您的 JavaScript,...
资源名称:javascript闭包详解 中文word版 内容简介: ... Javascript中有几个非常重要的语言特性——对象、原型...闭包是Closure, 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
编译闭包样式表(.gss)文件编译JavaScript文件编译Node.js文件编译汇总文件(实验性) 编译css文件复制资源复制远程资源将Markdown(.md)转换为.html文件最佳实践发展免责声明作者执照 安装使用NPM并使用npm ...
理解javascript函数式编程中的闭包(closure)_.docx
node --preserve-symlinks node_modules/closure-calculate-chunks/index.js --entrypoint ./src/js/entry.js 注意:应使用--preserve-symlinks选项启动使用该库的节点进程,否则返回的文件路径可能与节点模块解析...
消除通天塔关闭这是一个插件,以性能的名义消除了JavaScript中不必要的闭包。 注意:现在需要Babel 6。什么? 变成这样的代码: function demo ( input ) { return input . map ( item => item + 1 ) . map ( item =...
闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。
createjs-closure-externs 如果您想包含 createjs 框架,请使用 externs 进行高级闭包编译。 Externs 是为easeljs 0.7.0、movieclip 0.7.0、preloadjs 0.4.0、tweenjs 0.5.0 和soundjs 0.5.0 创建的。 可以在此处...
闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。很早就接触过闭包这个概念了,但是一直糊里糊涂的,没有能够弄明白JavaScript的闭包到底是什么,有什么用,今天在网上...
主要介绍了javascript闭包(Closure)用法,结合实例形式较为详细的分析了JavaScript闭包的概念、功能及使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下