js 作用域、闭包
2017-11-23 11:04
351 查看
第一步 理解js作用域
全局变量 函数外声明,函数内能读取
var n = 999;
function f1() {
alert(n)
}
f1(); // 999
局部变量 函数内声明,函数外不能读取
function f1() {
var n = 999
}
alert(n); // undefine
注:未使用var 声明也属于全局变量
第二步 从外部读取局部变量
函数内部,在定义一个函数
function f1() {
n = 999;
function f2() {
alert(n); // 999
}
}
原理:子对象从一级一级地向上寻找父对象的变量,父对象的所有对象,子对象都是可见。反过来不成立
函数内部,返回值
function f1() {
n = 999;
function f2() {
alert(n);
}
return f2;
}
var result = f1();
result(); // 999
第三步 闭包的概念
能够读取函数内部变量的函数
在js中,只有函数内部的子函数才能读取局部变量,所以闭包被理解为“定义在一个函数内部的函数”
本质上说,闭包就是将函数内部和函数外部连接在一起
第四步 闭包的用途
读取函数内部变量
存储变量
全局变量 函数外声明,函数内能读取
var n = 999;
function f1() {
alert(n)
}
f1(); // 999
局部变量 函数内声明,函数外不能读取
function f1() {
var n = 999
}
alert(n); // undefine
注:未使用var 声明也属于全局变量
第二步 从外部读取局部变量
函数内部,在定义一个函数
function f1() {
n = 999;
function f2() {
alert(n); // 999
}
}
原理:子对象从一级一级地向上寻找父对象的变量,父对象的所有对象,子对象都是可见。反过来不成立
函数内部,返回值
function f1() {
n = 999;
function f2() {
alert(n);
}
return f2;
}
var result = f1();
result(); // 999
第三步 闭包的概念
能够读取函数内部变量的函数
在js中,只有函数内部的子函数才能读取局部变量,所以闭包被理解为“定义在一个函数内部的函数”
本质上说,闭包就是将函数内部和函数外部连接在一起
第四步 闭包的用途
读取函数内部变量
存储变量
相关文章推荐
- js变量的声明、作用域以及闭包
- JS作用域、作用域链与闭包详解
- js 闭包作用
- JS教程:词法作用域和闭包
- JS高级知识(作用域,作用域链,闭包)
- JS闭包、作用域
- js 闭包作用
- JS作用域闭包、预解释和this关键字综合实例解析
- js笔记---作用域(执行上下文[execution context],活动对象) 闭包
- 浅谈js作用域和闭包
- JS变量提升、匿名函数、原型继承、作用域、闭包机制等。
- JS闭包的作用
- Js作用域与闭包
- js:深入闭包(作用域:下)
- 原来JS是这样的 - 提升, 作用域 与 闭包
- js闭包作用
- 那些年我们一起过的JS闭包,作用域,this,让我们一起划上完美的句号。
- JS作用域函数闭包
- 关于JS变量的作用域,作用域链与闭包
- js闭包的作用