JavaScript笔记 第十六章 匿名函数和闭包
1.匿名函数
2.闭包
匿名函数就是没有名字的函数,闭包是可访问一个函数作用域里变量的函数。
一、匿名函数
//普通函数
function getName() {
return 'name';
}
alert(getName()); //匿名函数
function () { //单独的匿名函数,是无法运行的
return 'name'; //就算能运行,也无法调用,因为没有名称
} //把匿名函数赋值给变量
var getName= function () {
return 'name';
}; //通过自我执行来执行匿名函数
(function () { //(匿名函数)(); 第一圆括号放匿名函数,第二个圆括号执行
alert('name');
})(); (function () {
alert('name');
})(); //把匿名函数自我执行的返回值赋给变量
var getName= (function () {
return 'name';
})(); alert(getName);
二、闭包
闭包是指有权访问另一个函数作用域中的变量的函数, 创建闭包的常见的方式, 就是在一个函数内部创建另一个函数,通过另一个函数访问这个函数的局部变量。
//通过闭包返回局部变量
function getAge() {
var age= 100;
return function () {
return age;
};
} alert(getAge()());
使用闭包有一个优点, 也是它的缺点: 就是可以把局部变量驻留在内存中, 可以避免使 用全局变量。(全局变量污染导致应用程序不可预测性,每个模块都可调用必将引来灾难, 所以推荐使用私有的,封装的局部变量)。
//使用匿名函数实现局部变量驻留内存中从而累加
function getAge() {
var age = 100;
return function () {
age++;
return age;
};
}
PS:由于闭包里作用域返回的局部变量资源不会被立刻销毁回收,所以可能会占用更 多的内存。过度使用闭包会导致性能下降,建议在非常有必要的时候才使用闭
包。
JavaScript笔记 第十六章 匿名函数和闭包的更多相关文章
- javascript进阶课程--第三章--匿名函数和闭包
javascript进阶课程--第三章--匿名函数和闭包 一.总结 二.学习要点 掌握匿名函数和闭包的应用 三.匿名函数和闭包 匿名函数 没有函数名字的函数 单独的匿名函数是无法运行和调用的 可以把匿 ...
- 《HTTP 权威指南》笔记:第十六章&第十七章 国际化、内容协商与转码
<HTTP 权威指南>笔记:第十六章 国际化 客户端通过在请求报文中的 Accept-Language 首部和 Accept-Charset 首部来告知服务器:“我理解这些语言.”服务器通 ...
- Programming In Scala笔记-第十六章、Scala中的List
本章主要分析Scala中List的用法,List上可进行的操作,以及需要注意的地方. 一.List字面量 首先看几个List的示例. val fruit = List("apples&quo ...
- ES6学习笔记(十六)async函数
1.含义 ES2017 标准引入了 async 函数,使得异步操作变得更加方便. async 函数是什么?一句话,它就是 Generator 函数的语法糖,号称异步的终极解决方案. 前文有一个 Gen ...
- Linux 笔记 - 第十六章 LNMP 之(一) 环境搭建
博客地址:http://www.moonxy.com 一.前言 LNMP 中的 N 指 Nginx,在静态页面的处理上,Nginx 较 Apache 更胜一筹:但在动态页面的处理上,Nginx 并不比 ...
- 《Java编程思想》笔记 第十六章 数组
1 数组 数组和容器比较,数组的优点也只剩访问效率高这一点了. 2 数组是第一级对象 数组也是一个对象,和其他普通对象一样在堆中创建, int[ ] arr arr是数组的引用. 可以隐式创建数组对 ...
- UNP学习笔记(第二十六章 线程)
线程有时称为轻权进程(lightweight process) 同一进程内的所有线程共享相同的全局内存.这使得线程之间易于共享信息,然后这样也会带来同步的问题 同一进程内的所有线程处理共享全局变量外还 ...
- Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十六章:实例化和截头锥体裁切
原文:Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十六章:实例化和截头锥体裁切 代码工程地址: https://git ...
- 《Linux命令行与shell脚本编程大全》 第十六章 学习笔记
第十六章:创建函数 基本的脚本函数 创建函数 1.用function关键字,后面跟函数名 function name { commands } 2.函数名后面跟空圆括号,标明正在定义一个函数 name ...
随机推荐
- linux watchdog demo hacking
/********************************************************************** * linux watchdog demo hackin ...
- 【转】Android底层库和程序
原文网址:http://blog.csdn.net/louiswangbing/article/details/6616202 Android底层库和程序 1. 本地实现的基本结构 Andro ...
- Selenium2Library系列 keywords 之 _SelectElementKeywords 之 get_list_items(self, locator)
def get_list_items(self, locator): """Returns the values in the select list identifie ...
- mac远程连接 win8
首先 打开组策略 .windows8 下 按win+R 可以唤出运行,输入[gpedit.msc]按下 回车键 选择[计算机配置]>[管理模板]>[Windows组件]>[远程桌面服 ...
- class0513(html基础加强2)
使用VS创建网页 新建Web项目(新建→ASP.Net Web应用程序),新建html页面(添加→新建项→Web→HTML页) 查看页面的方式: 切换到“设计”视图,可以在这里查看初步的预览效果,不是 ...
- oracle ref游标
Oracle 系列:REF Cursor 在上文 Oracle 系列:Cursor (参见:http://blog.csdn.net/qfs_v/archive/2008/05/06/240479 ...
- HDU-4704 Sum 大数幂取模
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4704 题意:求a^n%m的结果,其中n为大数. S(1)+S(2)+...+S(N)等于2^(n-1) ...
- MAC OS安装wget
MAC下没有wget工具,不习惯curl,使用起来还是很不方便的.下载了一个wget源码吧,编译安装.sudo curl -O http://ftp.gnu.org/gnu/wget/wget-1.1 ...
- Java文件合并
文件分割与合并是一个常见需求,比如:上传大文件时,可以先分割成小块,传到服务器后,再进行合并.很多高大上的分布式文件系统(比如:google的GFS.taobao的TFS)里,也是按block为单位, ...
- [C++]VS与第三方工具下载
名称:Qt 5.1.1 (商业版与开放源码许可GPL/LGPL) 说明:Qt是一个1991年由奇趣科技开发的跨平台C++图形用户界面应用程序开发框架 下载:http://www.qt.io/downl ...