深圳HTML5学习:JavaScript 中的闭包
JavaScript 本身是一门若类型语言。从其语法设计来看,是一门比较容易上手、容易学习的语言。
但是,在 Javascript 中也有一些比较难以理解的知识点,其中闭包就是一个。
- 词法作用域
为了更好的理解闭包的概念和应用,首先我们要掌握JavaScript中词法作用域。
作用域分为 全局作用域 和 局部作用域。
局部作用域:由于函数可以限定作用域范围,因此在函数内部为 局部作用域。
全局作用域:不在任何函数内,而是在整个脚本script标签下,都有效的访问范围被称为 全局作用域。
请看下面代码:
var a = 10;
function foo(){
var b = ‘hi’;
}
foo();
在上面代码中,变量a 不在任何函数中定义,因此 变量a 为全局变量;而在函数foo中定义的变量b 是 局部变量。变量a 在整个脚本范围内,即script标签下都是可以被访问到的,但是变量b则只能在函数foo内部为访问到。
那么,问题就来了。“如果在实际开发时,在函数foo外部,也想访问到变量b呢?”。此时,闭包技术就此登场了。
2. 闭包的概念
闭包就是能够读取其他函数内部变量的函数。例如在javascript中,只有函数内部的子函数才能读取局部变量,所以闭包可以理解成“定义在一个函数内部的函数“。在本质上,闭包是将函数内部和函数外部连接起来的桥梁。
看下面代码:
// 函数foofunction foo(){
var