函数内部可以直接读取全局变量
var n=999;
function f1(){
alert(n);
}
f1(); // 999
函数外部无法读取函数内的局部变量
function f1(){
var n=999;
}
alert(n); // error
函数内部声明变量的时候,一定要使用var或this命令。如果不用的话,实际上声明了一个全局变量
function f1(){
n=999;
}
f1();
alert(n); // 999
从外部读取局部变量,在函数的内部,再定义一个函数
function f1(){
var n=999;
function f2(){
alert(n); // 999
}
}
链式作用域:子对象会一级一级地向上寻找所有父对象的变量。所以,父对象的所有变量,对子对象都是可见的,反之则不成立。
把f2作为返回值,就可以在f1外部读取它的内部变量了
function f1(){
var n=999;
function f2(){
alert(n);
}
return f2;
}
var result=f1();
result(); // 999
f1是f2的父函数,而f2被赋给了一个全局变量,这导致f2始终在内存中,而f2的存在依赖于f1,因此f1也始终在内存中,不会在调用结束后,被垃圾回收机制(garbage collection)回收
思考:
代码一
var name = "window";
var obj = {
name : "myobject",
getNameFunc : function(){
return function(){
return this.name;
}
}
}
alert(obj.getNameFunc()());
代码二
var name = "window";
var obj = {
name : "myobject",
getNameFunc : function(){
var that = this;
return function(){
return that.name;
}
}
}
alert(obj.getNameFunc()());
原作者: 阮一峰 http://www.ruanyifeng.com/blog/2009/08/learning_javascript_closures.html
分享到:
相关推荐
js闭包写法学习demo
概念往往都是干涩且难懂的,让我们用人话来解释就是:如果我们不确定这个函数有多少个参数,我们可以先给它传入一个参数,然后通过JS闭包(如若不懂JS闭包,请先学习闭包知识点再来学习本篇博文https:
iOS开发之swift闭包学习
用矩阵求对称闭包。简洁,轻松学习,相互交流。
javaScript无可争议的是如今前台开发最常用的技术,该文档讲解了javaScript中闭包技术,在jquery中大量的使用了该技术,学好可以更好的理解学习jquery。
用矩阵求自反闭包。容易理解,轻松学习,交流经验。
闭包机制是JavaScript的重点和难点,本文希望能帮助大家轻松的学习闭包 一、什么是闭包? 闭包就是可以访问另一个函数作用域中变量的函数。 下面列举出常见的闭包实现方式,以例子讲解闭包概念 function f1(){ ...
以下是我学习闭包的记录,希望对你有些帮助。 变量作用域 在学习闭包之前,我们首先要理解JavaScript不同与其他语言独特的变量作用域。在JavaScript中,不存在局部作用域的概念,但是有全局作用域以及函数作用域。...
学习Javascript闭包 putishuxinli.com
Warshall传递闭包算法,使用C++实现Warshall传递闭包算法,对正在学习算法的同学应该挺有帮助的
帮助你快速学习js的闭包,简单高效的文档资源! 一、变量的作用域 二、如何从外部读取局部变量? 三、闭包的概念 四、闭包的用途 五、使用闭包的注意点 六、思考题 JavaScript闭包例子
使用XMLHTTPRequest实现自定义ajax。javascript闭包模式写法。值的学习
学习javascript闭包函数的实用文档,讲解全面、详细。pdf格式,
离散数学关系的闭包PPT学习教案.pptx
闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。 当function里嵌套function时,内部的function可以访问外部function里的变量。 function foo(x) { var tmp = 3; ...
javascript closures leaning,闭包学习
在网上搜索学习关于闭包的技术时发现讲的都比较抽象【我是菜鸟】,不好理解闭包的概念以及使用方法。今天我们带着疑问去学习:首先我给大家还原一下需求场景;对需求场景进行分析;引入闭包解决方案;升华闭包概念...
本文实例讲述了JS学习笔记之闭包小案例。分享给大家供大家参考,具体如下: 直接上代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <title>Document</...
swift 闭包+嵌套函数+extension+单例+嵌套函数