JavaScript闭包
来源:互联网 发布:手机淘宝一元秒杀攻略 编辑:程序博客网 时间:2024/05/18 03:13
谈到JavaScript的闭包必然离不开作用域。在JavaScript里,作用域分为全局作用域(在任何地方都能访问)和局部作用域(在指定的代码片段内能访问)。
1、局部作用域通常是函数内部作用域,在函数外部是无法直接访问函数内部定义的局部变量。看如下代码:
function fun () {
var age = 18;
}
console.log(age) //Uncaught ReferenceError: age is not defined 报错,age未定义
由此可见,在fun函数外部是无法访问函数fun内部的age变量的
2、闭包则提供了一种在局部作用域外访问局部作用域内部变量的途径。看如下代码:
function fun () {
var age = 18;
function getAge () {
age++
return age
}
return getAge
}
var foo = fun()
console.log(foo()) //19 第一次运算的结果
console.log(foo()) //20 age并没有被回收,一直存在,所以第二次运算是:19++则是20,而不是重新定义age=18
console.log(foo()) //21 age并没有被回收,一直存在,所以第三次运算是:20++则是21,而不是重新定义age=18
我们在函数fun外部成功的获取到了函数fun内部的局部变量age。可以看出,fun函数的返回值是一个调用了局部变量age的函数getAge,那么在fun外部调用fun时能得到fun函数的内部函数getAge,而这个内部函数getAge是可以访问fun内部的局部变量age的,所以我们能够在函数fun外访问到age。由于函数fun可在对应的作用域内调用,且调用时需要访问它内部的局部变量age,所以fun内部的age需要一直存在,直到fun被回收。
3、闭包的应用场景
a、由于函数fun内部的age变量会一直存在,那么可以用来做变量值的长期保存。
b、当某些变量需要限制访问权限,做变量保护时,就可以使用闭包,提供指定的访问接口访问变量。
--------------------------------------------分割线啊分割线--------------------------------------------------
总结下前端学习感悟,如有错误,欢迎拍砖
- 【JavaScript】Javascript闭包
- javascript的闭包javascript
- Javascript闭包演示javascript
- [ javascript ] javascript闭包测试!
- 【javascript】javascript中的闭包
- 【javascript】学习Javascript闭包
- 理解 JavaScript 闭包
- javascript 闭包
- javascript闭包
- Javascript闭包
- JavaScript中的"闭包"
- JavaScript 闭包
- javascript中的闭包
- 理解 JavaScript 闭包
- Javascript Closures[闭包]
- javascript闭包
- Javascript 闭包详解
- Javascript闭包技术
- 神经网络压缩(7)Soft weight-sharing for neural network compression
- Sicily 1500. Prime Gap | 运用数论结论:10^9以内,两个相邻素数距离不超过400
- springMVC-2-常用注解
- CSP开发基础--CSP入门简介
- java jar包启动 内存参数
- JavaScript闭包
- java开发C编译器:jvm函数调用时的参数传递
- 优化算法——人工蜂群算法(ABC)
- Java MyBatis自动生成映射文件
- POJ 3061Subsequence 【尺取法】
- DOS命令使用汇总
- 欢迎使用CSDN-markdown编辑器
- CPP类和对象—四个默认成员函数+运算符重载
- JAVA基础语法