只能是粗浅的,毕竟js用法太灵活。 首先抛概念:闭包(closure)是函数对象与变量作用域链在某种形式上的关联,是一种对变量的获取机制。这样写鬼能看懂。 所以要大致搞清三个东西:函数对象(function object)、作用域链(scope chain)以及它们如何关联(combina...
分类:
Web程序 时间:
2015-07-17 18:26:30
阅读次数:
146
经常忘记闭包的具体用法,写个例子给以后参考:没用闭包:for(vari=0;i<100;i++){
setTimeout(function(){
console.log(i)},1000
)
}结果1s后显示100个100 使用闭包:for(vari=0;i<100;i++){
(function(i){
return(function(i){
setTimeout(function(){console...
分类:
Web程序 时间:
2015-07-16 22:31:51
阅读次数:
150
闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。一、变量的作用域要理解闭包,首先必须理解Javascript特殊的变量作用域。变量的作用域无非就是两种:全局变量和局部变量。Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量。...
分类:
编程语言 时间:
2015-07-16 00:39:52
阅读次数:
175
JavaScript闭包,是JS开发工程师必须深入了解的知识。3月份自己曾撰写博客《JavaScript闭包》,博客中只是简单阐述了闭包的工作过程和列举了几个示例,并没有去刨根问底,将其弄明白!
现在随着对JavaScript更深入的了解,也刚读完《你不知道的JavaScript(上卷)》这本书,所以乘机整理下,从底层和原理上去刨一下。
JavaScript并不具有动态作用域,它只有词法作...
分类:
编程语言 时间:
2015-07-12 17:34:08
阅读次数:
258
闭包在js开发中会经常被使用到。那么,什么是闭包?一个官方的解释是:一个拥有许多变量和绑定了这些变量的环境的表达式。换句话说,JavaScript允许使用内部函数---即函数定义和函数表达式位于另一个函数的函数体内。而且,这些内部函数可以访问它们所在的外部函数中声明的所有局部变量、参数和声明的其他内...
分类:
Web程序 时间:
2015-07-11 10:28:48
阅读次数:
142
var functionName = function(arg){ //函数体}; 匿名函数:创建一个函数,并将它赋值给一个变量,这种情况下创建的函数叫做匿名函数,因为function关键字后面没有标识符。(匿名函数有时候也叫拉姆达函数)。匿名函数的name属性是空字符串。 注:FireFox...
分类:
Web程序 时间:
2015-07-02 11:39:24
阅读次数:
191
seajs是一个非常流行的模块开发引擎,目前项目中使用比较多,为了深入了解已经改进seajs我阅读了他的源码,希望对自己的代码生涯能有所启发。本文说介绍的是指seajs2.3.3版本。首先seajs的源编码结构如下:intro.js 闭包结构的前半部分(类似于左括号)sea.js 版本和全局变量ut...
分类:
Web程序 时间:
2015-07-01 00:59:32
阅读次数:
264
1.什么是闭包定义:是指有权访问另一个函数作用域中的变量的函数创建闭包:在一个函数内部创建另一个函数基本特点 在返回的匿名函数中 可以调用外部函数的变量 如下例中所示 内部函数(匿名函数) 可以访问外部函数的变量num 形式如a[num] 原因是匿名函数作用域链中包括外部函数test1的作用域闭包有...
分类:
Web程序 时间:
2015-06-27 16:22:04
阅读次数:
221
一、变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域。变量的作用域无非就是两种:全局变量和局部变量。Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量。Js代码 var n=999; function f1(){ alert(n); } ...
分类:
编程语言 时间:
2015-06-26 00:19:48
阅读次数:
235