您的位置:首页 > Web前端 > JavaScript

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中,只有函数内部的子函数才能读取局部变量,所以闭包被理解为“定义在一个函数内部的函数”
本质上说,闭包就是将函数内部和函数外部连接在一起

第四步 闭包的用途

读取函数内部变量

存储变量
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: