- 浏览: 51458 次
- 性别:
- 来自: 株洲
文章分类
最新评论
再一次来谈谈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 504javascript中的面向对象 理解js中的对象 最 ... -
react的学习总结
2015-06-10 11:51 1959React介绍(具体总结请参考附件chm,本文的chm版 ... -
抽取jquery源码实现获取元素的精确位置
2014-10-18 11:32 413获取元素准确位置的写法 知识点预备:getBounding ... -
jquery实现弹窗居中的简单效果
2014-10-18 09:24 968<!DOCTYPE html PUBLIC &quo ... -
javascript 基础知识零散汇总
2014-09-29 15:09 3741:数据类型判断 基础类型判断 Object.prot ... -
jquery jsonp参数编码问题不一致问题的解决方案
2014-09-27 23:06 6767<!doctype html> <ht ... -
javascript源对象于对象引用之前不得不说的事情
2014-09-13 17:05 374var source = {"a":3 ... -
sEMMET插件的最全快捷方式【来自Dash文档中心】
2014-09-11 10:44 555s -
仿淘宝放大镜效果
2014-09-11 00:31 428/* *知识点预备 clientX,clientY ... -
js--简单放大镜实现(带移动方块)
2014-09-11 00:22 735/* *知识点预备 clientX,clientY ... -
js+css自定义滚动条(包含滚动事件处理)
2014-08-31 12:11 560<!DOCTYPE html> <htm ... -
div+css(javascript)自定义滚动条
2014-08-31 10:07 320<!DOCTYPE html> <ht ... -
javascript--闭包彻底弄清楚
2014-08-27 10:09 378<!DOCTYPE html> ... -
JavaScript 闭包再探讨
2014-08-27 10:03 0<!DOCTYPE html> <htm ... -
JavaScript 闭包再探讨
2014-08-27 10:03 404<!DOCTYPE html> <htm ... -
javascript位置相关(一)---offset等测试
2014-08-17 21:19 480元素的offsetParent属性 : 只读 属性 离当前 ... -
javascript位置相关(二)--getBoundingClientRect
2014-08-17 21:17 603http://msdn.microsoft.com/en- ... -
setTimeout 使用
2014-08-17 18:22 412开门见山:众所周知,setTimeout ... -
setTimeout 0 使用
2014-08-17 18:03 431经常看到setTimeout延 ... -
前端知识点分享3--DOM操作
2014-07-28 22:27 525首先先要知道我们必须 ...
相关推荐
Closure Loader是一个专为前端开发者设计的开源工具,主要用于处理Google闭包库(Closure Library)的依赖管理。这个加载器是Webpack的一个插件,它允许开发者在Webpack构建流程中无缝地整合Closure Library,从而...
closure-compiler-npm, 用于管理和记录关闭编译器的包,通过npm使用 google-closure-compiler 用闭包编译器检查。编译。优化和压缩 Javascript这个库跟踪发布到 npmjs.org 和相关插件的相关问题。 任何与插件无关的...
《Google Closure Library 20180405:JavaScript编程的艺术与实践》 Google Closure Library,简称Closure Library,是Google开发的一个强大的JavaScript库,它为开发者提供了丰富的工具和资源,帮助构建高质量、高...
在深入讨论JavaScript闭包之前,首先需要了解JavaScript的变量作用域。在JavaScript中,变量的作用域分为两种:全局变量和局部变量。全局变量是在函数外部定义的变量,可以在JavaScript程序的任何地方被访问。局部...
在Java中,你可以使用Lambda表达式或匿名内部类来创建闭包,而在JavaScript中,所有的函数都是闭包。在C#中,可以使用`Action`、`Func`等委托类型或`lambda`表达式来创建闭包。 总的来说,闭包在编程中扮演着至关...
谷歌关闭编译器使用Closure-Compiler检查,编译,优化和压缩JavaScript 该存储库跟踪与发布到npmjs.org和相关插件有关的问题。 与插件本身无关的任何错误都应报告给。配套该编译器分布在多个平台上。 每个平台都是其...
Closure Compiler 是一个让 JavaScript 下载和运行速度更快的工具。 它是一个真正的 JavaScript 编译器。 它不是从源语言编译为机器代码,而是从 JavaScript 编译为更好的 JavaScript。 它解析您的 JavaScript,...
闭包编译器是一个让javascript下载和运行更快的工具。它是一个真正的javascript编译器。它不是从源语言编译成机器代码,而是从javascript编译成更好的javascript。它解析你的javascript,分析它,删除死代码,重写并...
JavaScript中的闭包是一种高级特性,它是函数和其周围状态(词法作用域)的组合,即使函数在其定义的作用域之外被调用,它仍然能访问到这些状态。这个概念是JavaScript编程中的核心部分,尤其在处理异步操作、模块化...
闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。
### JavaScript闭包完整解释 #### 一、闭包的基本概念 **闭包**是一个非常重要的JavaScript概念,它指的是一个函数能够记住并访问其外部作用域中的变量的能力,即使该函数在其外部作用域之外被调用也是如此。具体...
Javascript中有几个非常重要的语言特性——对象、原型继承、闭包。其中闭包 对于那些使用传统静态语言C/C++的程序员来说是一个新的语言特性。本文将以例子入手来介绍Javascript闭包的语言特性,并结合一点 ...
资源名称:javascript闭包详解 中文word版 内容简介: ... Javascript中有几个非常重要的语言特性——对象、原型...闭包是Closure, 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
编译闭包样式表(.gss)文件编译JavaScript文件编译Node.js文件编译汇总文件(实验性) 编译css文件复制资源复制远程资源将Markdown(.md)转换为.html文件最佳实践发展免责声明作者执照 安装使用NPM并使用npm ...
本篇文章主要探讨JavaScript函数式编程中的一个重要概念——闭包(closure)。闭包是一种特殊的函数,它能记住其定义时的作用域,即使在函数执行完毕后,仍然可以访问到该作用域内的变量。在JavaScript中,每个函数...
在计算机科学中,闭包(Closure)是一种函数,它在一个包含一个或多个绑定变量的环境中被评估。当这个函数被调用时,它可以访问那些绑定变量。换句话说,闭包可以记住在其创建时周围存在的任何变量的状态,即使在...
node --preserve-symlinks node_modules/closure-calculate-chunks/index.js --entrypoint ./src/js/entry.js 注意:应使用--preserve-symlinks选项启动使用该库的节点进程,否则返回的文件路径可能与节点模块解析...