热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

体验javascript之美第五课五分钟完全邃晓匿名函数自实行和闭包

经由历程文你将学到:1.闭包是怎样回事儿?2.闭包的道理和在jquery中的运用3.从一到面试题完全明白闭包和渣滓接纳机制4.闭包在jquery中的运用概述常常听到闭包这个词儿,或

经由历程文你将学到:

1.闭包是怎样回事儿?

2.闭包的道理和在jquery中的运用

3.从一到面试题完全明白闭包和渣滓接纳机制

4.闭包在jquery中的运用

概述

常常听到闭包这个词儿,或许匿名函数自实行,之类的。究竟他们是一个东西吗?

1.什么是闭包?

​ 我不想扣定义,直接上例子。

function parent(firstname){
return function(lastname){
console.log(firstname+'·屌·'+lastname);
}
}
parent('尼古拉斯')('大彬哥');

看图:

《体验Javascript之美第五课 五分钟完全邃晓 匿名函数自实行和闭包》

函数实行完以后会烧毁(这里我就不谈客栈操作了明白图就好了),然后种种变量会渣滓接纳,而这里parent函数确切烧毁了,然则firstName这个参数并没有渣滓接纳,开释内存,依旧在内存中可以被return内里的函数运用,彷佛return内里的函数把 父函数的谁人资本给封闭在了本身的函数内里一样,这个函数烧毁资本被封闭到子函数中依旧可以运用的征象叫做闭包。

注重匿名函数自实行只是发生闭包的一种状况,闭包是征象或许情况,不实用匿名函数自实行也有许多状况发生闭包,所以而且根本就是两回事儿,不能殽杂。

类比,在window体系中,你子文件夹中有运用的文件父文件夹是没法删除的。

2.现实运用,状况许多,先来一道面试题。

function fn{
var arr = [];
for(var i = 0;i<3;i++){
arr.push(function(){
console.log(i);
});
}
return arr;
}
var arrFn = fn();
arrFn[0]();//3
arrFn[1]();//3
arrFn[2]();//3

与这个相似的一个题是轮回内里用事宜,事宜内里的i有题目,以下。

for(var i = 0;i aBtn[i].Onclick= function(){
alert(i);//3
};
}

另有一到异常爱考的面试题,

for(var i = 0;i<3;i++){
setTimeout(function(){
alert(i);
});
}

我只剖析一个,别的的人人就会剖析了。注重表象上大略的明白就是 函数实行一瞬间,并不会等定时器,然则这个说法并不对,由于第一个就说不通。好我给记人人进入内部深入剖析下历程。

《体验Javascript之美第五课 五分钟完全邃晓 匿名函数自实行和闭包》

记着一句话,函数定义压入arr的时刻并没有实行。

小考试,你能看出下面的顺序用了闭包吗?

function show(){
var a = 12;
setTimeout(function(){
console.log(a);
},1000);
}

3.闭包在jquery中运用。

闭包无处不在,直接看jquery的例子。


$('#btn').click(function(){
var json = {};
ajax(url,function(data){
json =dada;
});
});

推荐阅读
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 从零基础到精通的前台学习路线
    随着互联网的发展,前台开发工程师成为市场上非常抢手的人才。本文介绍了从零基础到精通前台开发的学习路线,包括学习HTML、CSS、JavaScript等基础知识和常用工具的使用。通过循序渐进的学习,可以掌握前台开发的基本技能,并有能力找到一份月薪8000以上的工作。 ... [详细]
  • 单页面应用 VS 多页面应用的区别和适用场景
    本文主要介绍了单页面应用(SPA)和多页面应用(MPA)的区别和适用场景。单页面应用只有一个主页面,所有内容都包含在主页面中,页面切换快但需要做相关的调优;多页面应用有多个独立的页面,每个页面都要加载相关资源,页面切换慢但适用于对SEO要求较高的应用。文章还提到了两者在资源加载、过渡动画、路由模式和数据传递方面的差异。 ... [详细]
  • 本文介绍了在满足特定条件时如何在输入字段中使用默认值的方法和相应的代码。当输入字段填充100或更多的金额时,使用50作为默认值;当输入字段填充有-20或更多(负数)时,使用-10作为默认值。文章还提供了相关的JavaScript和Jquery代码,用于动态地根据条件使用默认值。 ... [详细]
  • 本文介绍了Java后台Jsonp处理方法及其应用场景。首先解释了Jsonp是一个非官方的协议,它允许在服务器端通过Script tags返回至客户端,并通过javascript callback的形式实现跨域访问。然后介绍了JSON系统开发方法,它是一种面向数据结构的分析和设计方法,以活动为中心,将一连串的活动顺序组合成一个完整的工作进程。接着给出了一个客户端示例代码,使用了jQuery的ajax方法请求一个Jsonp数据。 ... [详细]
  • 本文介绍了使用FormData对象上传文件同时附带其他参数的方法。通过创建一个表单,将文件和参数添加到FormData对象中,然后使用ajax发送POST请求进行文件上传。在发送请求时,需要设置processData为false,告诉jquery不要处理发送的数据;同时设置contentType为false,告诉jquery不要设置content-Type请求头。 ... [详细]
  • 本文介绍了闭包的定义和运转机制,重点解释了闭包如何能够接触外部函数的作用域中的变量。通过词法作用域的查找规则,闭包可以访问外部函数的作用域。同时还提到了闭包的作用和影响。 ... [详细]
  • 目录实现效果:实现环境实现方法一:基本思路主要代码JavaScript代码总结方法二主要代码总结方法三基本思路主要代码JavaScriptHTML总结实 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • HTML5网页模板怎么加百度统计?
    本文介绍了如何在HTML5网页模板中加入百度统计,并对模板文件、css样式表、js插件库等内容进行了说明。同时还解答了关于HTML5网页模板的使用方法、表单提交、域名和空间的问题,并介绍了如何使用Visual Studio 2010创建HTML5模板。此外,还提到了使用Jquery编写美好的HTML5前端框架模板的方法,以及制作企业HTML5网站模板和支持HTML5的CMS。 ... [详细]
  • 使用eclipse创建一个Java项目的步骤
    本文介绍了使用eclipse创建一个Java项目的步骤,包括启动eclipse、选择New Project命令、在对话框中输入项目名称等。同时还介绍了Java Settings对话框中的一些选项,以及如何修改Java程序的输出目录。 ... [详细]
  • 一、什么是闭包?有什么作用什么是闭包闭包是定义在一个函数内部的函数,它可以访问父级函数的内部变量。当一个闭包被创建时,会关联一个作用域—— ... [详细]
  • 本文介绍了如何使用jQuery和AJAX来实现动态更新两个div的方法。通过调用PHP文件并返回JSON字符串,可以将不同的文本分别插入到两个div中,从而实现页面的动态更新。 ... [详细]
  • Node.js学习笔记(一)package.json及cnpm
    本文介绍了Node.js中包的概念,以及如何使用包来统一管理具有相互依赖关系的模块。同时还介绍了NPM(Node Package Manager)的基本介绍和使用方法,以及如何通过NPM下载第三方模块。 ... [详细]
  • 本文是一篇翻译文章,介绍了async/await的用法和特点。async关键字被放置在函数前面,意味着该函数总是返回一个promise。文章还提到了可以显式返回一个promise的方法。该特性使得async/await更易于理解和使用。本文还提到了一些可能的错误,并希望读者能够指正。 ... [详细]
author-avatar
_Yoha
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有