老尚,能讲讲闭包么?“可以,没问题,马上”
时间:2022-04-27
本文章向大家介绍老尚,能讲讲闭包么?“可以,没问题,马上”,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
到今天,零基础课程中的电商网站项目的部分,基本都结束了。现在这个电商网站的结构变成了下面这样,
(缩略图,请谅解)
接下来的日子开始node以及其它方面的内容,这时有个同学提出,
“当然可以”。
闭包(closure [ˈkloʊʒə(r)]),
它是一个外来词,没有对应的中文含义。你可以认为这个词是生造出来的。
所以关于它的绝大部分解释,都比较生硬难懂。
function aa(){
return function(){
console.log('这个返回的匿名函数,就是闭包。');
}
}
aa()();
本例中,右侧这个括号,运行的就是return回来的那个匿名函数。
简单的讲,闭包就是,“函数套函数。父函数里面的子函数,就是闭包。”
闭包,是一个作用域。
任何一个函数,都是闭包。例如,
function bb(){
console.log('这个bb函数,它就是一个闭包。');
}
闭包的特性:
1,函数内部可以读取全局变量;
2,函数外部不能读取函数内部的变量;
这其实就是变量作用域。
// 函数内部可以读取全局变量;
var a1 = 999;
function aa(){
console.log( a1 )
}
aa();
// 函数外部不能读取函数内部定义的变量
function aa(){
var a33 = 999;
}
console.log( a33 )
aa()
// 父函数aa不能读取子函数bb的变量
function aa(){
var a1 = 999;
console.log( b1 );
function bb(){
var b1 = 888;
console.log('这个返回的匿名函数,就是闭包。');
}
}
aa();//b1 is not defined
//父函数读取子函数里面的变量,要使用return
function aa(){
var aa1 = 999; //私有变量
function bb(){
console.log(aa1);
}
return bb;
}
var xx = aa();
xx();
闭包的用途之一,用来定义“私有方法”和“私有变量”。
这种私有的方法和变量,在外部无法访问。
// 下面是一个对象,它同时也是一个函数,
// 当添加了prototype的时候,它也是构造器,
// 它有一个私有方法 get,用来访问它自己内部的变量xx
function obj(){
var xx = 1;
function get(){
console.log(xx);
}
this.get = get;
}
obj.prototype = {
a:function(){
console.log('asaa');
}
}
var xx = new obj();
xx.get();
xx.a();
////////
简单的讲,上面这些就是闭包的内容。
- 【java网络】IO编程
- 一周 Github Trending 热门项目,最全中华古诗词数据库 | Github 项目推荐
- 【线程池】线程池与工作队列
- 一个快速方便的图形化 Python 调试器 —— birdseye | Github 项目推荐
- 关于分区表的在线重定义(r5笔记第98天)
- 10个实用的但偏执的Java编程技术
- 看似诡异的tablespace online问题(r5笔记第95天)
- python2.7进行爬虫POI代码(划分小网格算法)
- 从 Encoder 到 Decoder 实现 Seq2Seq 模型
- python2.7进行爬虫百度POI代码(划分小网格算法)
- 如何通过TTL调试光猫
- 基于树莓派和Tensowflow的物体识别-brain
- SNA中:中心度及中心势诠释(不完整代码)
- 教程 | 基于计算机视觉使用Python和OpenCV计算道路交通
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法