JS闭包(转载加整理)】的更多相关文章

原文地址:http://www.jb51.net/article/24101.htm 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现. 一.变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域. 变量的作用域无非就是两种:全局变量和局部变量. Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量. Js代码 var n=999; function f1(){ alert(n); } f1(); //…
此篇文章来源于http://www.jb51.net/article/24101.htm 一.变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域. 变量的作用域无非就是两种:全局变量和局部变量. Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量. var n=999; function f1(){ alert(n); } f1(); 另一方面,在函数外部自然无法读取函数内的局部变量. function f1(){ var n=999; } alert…
javascript深入理解js闭包 转载  2010-07-03   作者:    我要评论 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现. 一.变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域. 变量的作用域无非就是两种:全局变量和局部变量. Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量. Js代码 var n=999; function f1(){ alert(n); } f1()…
1.js放在head中会立即执行,阻塞后续的资源下载与执行.因为js有可能会修改dom,如果不阻塞后续的资源下载,dom的操作顺序不可控. 正常的网页加载流程是这样的. 浏览器一边下载HTML网页,一边开始解析 解析过程中,发现<script>标签 暂停解析,网页渲染的控制权转交给JavaScript引擎 如果<script>标签引用了外部脚本,就下载该脚本,否则就直接执行 执行完毕,控制权交还渲染引擎,恢复往下解析HTML网页 如果外部脚本加载时间很长(比如一直无法完成下载),就…
js闭包的用途详解 js闭包可以用在许多地方.它的最大用处有两个,一个是前面提到的可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中.具体怎么理解呢,各位看官请仔细看好下文   我们来看看闭包的用途.事实上,通过使用闭包,我们可以做很多事情.比如模拟面向对象的代码风格:更优雅,更简洁的表达出代码:在某些方面提升代码的执行效率. 1 匿名自执行函数 我们知道所有的变量,如果不加上var关键字,则默认的会添加到全局对象的属性上去,这样的临时变量加入全局对象有很多坏处,比如:别的函数可能…
背景:爱就要大胆说出来,对于编程我只想说,喜欢就大胆写出来.喜欢却不行动那就意味着失败.所以,对于在研究编程的猿们,我对同伴们说,大胆的学,大胆的写.呵呵,说这些其实无非是给我自己点动力,写下去的勇气. 今天写的是js闭包,这一个一直被我忽视的美.怎么说呢,其实之前我这人特别讨厌用闭包,为什么呢,因为习惯了写后台代码的人都知道,函数内部是不可以嵌套定义函数的.所以这一思想我之前一直没有转变,也感觉js的这样写法很“特别.很奇怪.甚至感觉没有必要,这也是我不想用的根本原因了.背景交代完毕. 额..…
转载▼ 标签: it   js闭包的作用域以及闭包案列的介绍:   首先我们根据前面的介绍来分析js闭包有什么作用,他会给我们编程带来什么好处? 闭包是为了更方便我们在处理js函数的时候会遇到以下的几种情况:   列1: function f1(){var a=1;f2();} function f2(){return a;} f1();//a没有定义   或者说我想调用一个全局变量的时候却发现不能调用,或者没有这个变量,没有定义这个变量,还要在想调用的时候不能重复出现,怎么办呢?所以就有了闭包…
Js闭包 闭包前要了解的知识  1. 函数作用域 (1).Js语言特殊之处在于函数内部可以直接读取全局变量 <script type="text/javascript"> var n=100; function parent(){ alert(n); } parent(); </script> 如果在php里 <?php $n=100; function parent(){ echo $n; } parent();//会报错 n未定义 ?> (2).…
DOMContentLoaded介绍 DOMContentLoaded事件的触发条件是: 将会在“所有的DOM全部加载完毕并且JS加载执行后触发”. 但如果“js是通过动态加载进来的话,是不会影响到DOMContentLoaded的触发时间” 如下图所示,蓝色的线代表DOMContentLoaded开始触发,但前提是JS已经加载完毕并执行了. (仅仅是DOM 并不是onload事件整个页面全部加载完毕触发,DOMContentLoaded比onload要早触发 请区分开,onload为红线 表示…
也议 js闭包和ie内存泄露原理 可以, 但小心使用. 闭包也许是 JS 中最有用的特性了. 有一份比较好的介绍闭包原理的文档. 有一点需要牢记, 闭包保留了一个指向它封闭作用域的指针, 所以, 在给 DOM 元素附加闭包时, 很可能会产生循环引用, 进一步导致内存泄漏. 比如下面的代码: function foo(element, a, b) { element.onclick = function() { /* uses a and b */ }; } 这里, 即使没有使用 element,…
前言: 昨天写了一个关于Java内部的博客,在内部类的最后一点中谈到了Java闭包的概念,他是这样定义闭包的:闭包是一个可调用的对象,它记录了一些信息,这些信息来自创建它的作用域.结合Java的内部类可以很好的理解这一点(如有需要可参考ThinkInJava之内部类).突然之间想到js中的闭包,一直都无法很好的理解,故借此又看了一下js中的闭包,对我个人而言,感悟良多,借此也与大家分享一下,希望可以帮助大家,并一起快乐的学习成长,天天向上. 零:js闭包概念(通过Java闭包和js嵌套函数和图一…
1.array操作关键字: pop() 删除最后一个:push最后添加一个或者多个:reverse颠倒数组:shift删除第一个元素:unshift首部添加元素:concat衔接两个数组:join把数组按照指定字符变为字符:slice(1,1)截选数组元素: 2.js闭包的优缺点: 闭包是有权访问另一个函数私有变量的函数叫闭包: 优点:避免变量污染.加强了封装性,逻辑性比较强代码的可读性高:加载到内存中执行效率高: 缺点:在内存中,造成了内存浪费,如果滥用闭包是灾难性的: 3.模块化的意义: E…
本文是通过实例来帮助大家深刻理解js闭包,是篇非常不错的文章,这里推荐给大家,有需要的小伙伴可以参考下 Js闭包 闭包前要了解的知识 1. 函数作用域 (1).Js语言特殊之处在于函数内部可以直接读取全局变量 复制代码 代码如下: <script type="text/javascript"> var n=100; function parent(){ alert(n); } parent();//100 </script> 如果在php里 复制代码 代码如下:…
JavaScript 数组操作函数(部分)--转载+格式整理 今天看了一篇文章,主要讲的对常用的Js操作函数:push,pop,join,shift,unshift,slice,splice,concat的总结.身为一个有点完美主义的强迫症患者来说,原文的格式,差点杀死我.so,这篇文章就出来了……原文:传送门. 一.push 和 pop 这两个函数都是对数组从尾部进行压入或弹出操作. push(arg1,arg2,...)可以每次压入一个或多个元素,并返回更新后的数组长度. 注意:如果参数也是…
图片裁剪的js有哪些(整理) 一.总结 一句话总结:如果用了amaze框架就去amaze框架的插件库里面找图片裁剪插件,如果没用,jcrop和cropper都不错. 1.amazeui的插件库中有很多好用的插件(包括两款比较好用的图片裁剪工具)给了我们什么启示? 关注前端框架的插件,或者说多去探索他们的功能,多去点点 那些比较知名的前端框架肯定是因为他们的很多方面都做的很好,有很多功能,而我还没有发现,比如bootstrap,所以多去官网,多去点点 2.裁剪的英语单词叫什么? crop 这个真的…
JSPatch ios开发不能不知的动态修复bug补丁第三方库JSPatch 使用学习:JSPatch导入.和使用..js文件传输加解密 ios开发面临审核周期长,修复bug延迟等让人无奈的问题,所以,热修复的产生成为必然. ios上线APP产生bug,需要及时修复,如何修复: 我整理了jspatch的使用说明,并建立一个简单demo供他人使用和学习,此博客不做详细介绍,具体如何使用附上代码地址: 代码下载地址: https://github.com/niexiaobo/JSPatchUse #…
js闭包小实验 一.总结 一句话总结: 闭包中引用闭包外的变量会使他们常驻内存 function foo() { var i=0; return function () { console.log(i++); } } 1.如下实验的结果是什么,为什么? |||-begin function foo() { var i=0; return function () { console.log(i++); } } var f1=foo(); var f2=foo(); f1(); f1(); f1()…
js的DOM操作整理(整理) 一.总结 一句话总结: dom操作有用原生js的dom操作,也可以用对js封装过的jquery等插件来更加方便的进行dom操作 1.dom是什么? 对于JavaScript,为了能够使JavaScript操作Html,JavaScript就有了一套自己的dom编程接口. 对于Html,dom使得html形成一棵dom树,类似于一颗家族树一样,一层接一层,子子孙孙. 2.Html的DOM树是什么? HTML中的每个标签元素,属性,文本都能看做是一个DOM的节点,这些d…
JavaScript不需要编译即可运行,这让JavaScript构建的应用程序可以变得很灵活.我们可以根据需要动态从服务器加载JavaScript脚本来创建和控制UI来与用户交互.下面结合Ext JS来说明如何从服务器上动态加载JS脚本来动态创建窗体. 1 项目结构: 项目结构如下:其中GetJSUI一般处理程序用来从数据库表中抓取UI配置,并返回到客户端:Contents文件夹下用HTML文件和JS库等. 2 数据库表结构 可以用下面的SQL在MSSQL中创建表,其中JavaScriptCon…
无聊写了一个JS下拉加载插件,有需要的可以下载. // 使用 // new ManDownLoad("#ul","json/load.json",function(data,obj){ // var str = ""; // data.data.forEach(function(item,index){ // str += "<li>" + item.title + "</li>";…
图片预加载有大体有几种方式 1.html标签或css加载图片. 显而易见我们使用img标签或者通过标签的background-image属性都可以实现图片的预加载.但是为了避免初次载入过多图片影响体验.一般最好在文档渲染完成以后再加载(使用window.onload等). 2.纯js实现预加载 空城计-Code记的Javascript实现图片的预加载的完整实现的预加载实例为 function preloadimages(arr){ var newimages=[], loadedimages=0…
js jquery 页面加载初始化方法 一.js页面加载初始化方法 // 1.在body里面写初始化方法. <body onload='init()'> </body> <script type="text/javascript"> function init(){ // 初始化内容 } </script> // 2.window.onload=function(){} <script type="text/javascr…
由工作中演变而来的面试题 这是一个我工作当中的遇到的一个问题,似乎很有趣,就当做了一道题去面试,发现几乎没人能全部答对并说出原因,遂拿出来聊一聊吧. 先看题目代码: function fun(n,o) { console.log(o) return { fun:function(m){ return fun(m,n); } }; } var a = fun(0); a.fun(1); a.fun(2); a.fun(3);//undefined,?,?,? var b = fun(0).fun(…
简介 当页面图片太多时,加载速度就会很慢.尤其是用2G/3G/4G访问页面,不仅页面慢,而且还会用掉很多流量.图片懒加载的原理就是将页面内所有需要加载的图片全部换成一张默认的图片(一般尺寸很小),只有图片在可视区域才去请求加载. 实现原理 <img class="lazy" src="loading.png" data-src="img/example.jpg"> 页面打开时首先会加载src里的图片,即很小的加载图:通过监听scrol…
js页面跳转整理 js方式的页面跳转1.window.location.href方式    <script language="javascript" type="text/javascript">           window.location.href="target.aspx";     </script> 2.window.navigate方式跳转   <script language="jav…
本来想一气呵成,把加载的过程都写了,但是卡着呢,所以只好在分成两份了. 1.页面里使用<script>来加载 boot.js . 2.然后在boot.js里面动态加载 bootLoad.js.以时间作为标识 var dateVer = date.getYear() + '_' + date.getMonth() + '_' + date.getDate() + '_' + date.getHours(); 这样可以保证一小时内肯定会被更新.同时也避免了每次都去更新. 3.boot.js里面根据…
总体思路 1.  建立一个js服务,该服务实现通用js文件的加载.依赖.缓存.更新以及复用. 2.  各个项目如果使用通用js,可(bi)以(xu)使用js服务实现加载. 3.  Js服务只提供通用的js,比如jQuery.my97.easyUI等(可根据实际情况设定具体的js文件). 4.  其他针对特点需求写的js文件,需要自己写代码加载.Js服务可以提供加载用函数.(正在考虑要不要使用sea.js) 5.  Js服务加载的js文件,不需要做任何修改.当然也不负责各个文件里的函数名称是否冲突…
上一篇发出来后得到了很多回复,在此首先感谢大家的热情捧场!有的推荐第三方框架,比如 In.js.requrieJS.sea.js.lab.js等.这个开阔了眼界,以前只知道sea.js,省去了自己搜索的麻烦.也用了点时间简单看了一下,因为每一个都是大块头,都有自己的理念,如果只是简单使用的话,那么谁便找一个就可以了,但是我习惯把原理弄清楚.因为我觉得虽然不知道原理也可以使用,但是知道了原理后,可以用的更好. 主要看的是sea.js,目前简单的理解是:一个加载js的机制 + 模块化编程(CMD规范…
通常,我们会用jq的.width()/.height()方法获取图片的宽度/高度或者用js的.offsetwidth/.offsetheight方法来获取图片的宽度/高度,但这些方法在我们通过样式设置了图片的宽高后获取的就不是图片的实际宽高,这显然在有些时候不是我们想要的结果,那么有没有一种方法来获取这样的实际宽高呢?答案是有的.下面的代码就能解决这样的问题: <img src="01.jpg" id="test" width="250px"…
    Js闭包特性源于内部函数可以将外部函数的活动对象保存在自己的作用域链上,所以使内部函数的可以将外部函数的活动对象占为己有,可以在外部函数销毁时依然存有外部函数内的活动对象内容,这样做的好处是可以为编程数据获取提供简巧快捷的方式,缺点是占用内存时间过长,容易造成内存泄漏,影响性能.下面是我总结的闭包常见的三种用法:    一 模仿块级作用域 (function(){ var a=1; var i=0; var temps=[]; while(i<10){ temps[i]=a+i; a=a…