文档章节

闭包

LinearLaw
 LinearLaw
发布于 2017/04/24 21:34
字数 231
阅读 16
收藏 0
点赞 0
评论 0

闭包,终于写出来了。

首先,我们必须要明白,js是单线程的!

js中的任务分为主要任务和次要任务。

次要任务(setTimeout setInterval..):先把所有的主要任务执行完毕,才会去执行次要任务的代码。

一般地,ajax、setTimeout、setInterval这些都是次要任务。

(1)原始代码,此时打印出来的只会是最后一次的i的值

       for(var i = 0; i < 10; i++){
           setTimeout(function(){
               console.log(i);
           }, 1000);
       }

(2)利用闭包后优化的代码

        for(var i = 0; i < 10; i++){
            function outer(){
                var j = i;
                function inner(){
                    console.log(j);
                }
                return inner;
            }
            var f = outer();
            setTimeout(f, 1000);
        }
//这时候就会打印0、1、2、3、4、5、6...这些了
//其实这段代码可以进一步优化

        for(var i = 0; i < 10; i++){
            setTimeout(function(j){
                //var j = i
                function inner(){
                    console.log(j);
                }
                return inner;
            }(i), 1000);
        }


(3)利用闭包优化斐波那契数列计算,结合缓存原理

——待更新

© 著作权归作者所有

共有 人打赏支持
LinearLaw
粉丝 4
博文 30
码字总数 36233
作品 0
深圳
个人站长
Swift 闭包

Swift.png 闭包 闭包是保存一段代码块,可以在代码中传递和是使用(类似Block) 闭包和block类似 闭包的表达式如下 闭包的函数体部分由关键字 in 引入。该关键字表示闭包的参数和返回值类型定...

追逐iOS ⋅ 2017/11/27 ⋅ 0

深入理解javascript原型和闭包(完结)

说明:   该教程绕开了javascript的一些基本的语法知识,直接讲解javascript中最难理解的两个部分,也是和其他主流面向对象语言区别最大的两个部分——原型和闭包,当然,肯定少不了原型链...

zh151832 ⋅ 2016/08/02 ⋅ 0

【闭包概念】关于闭包概念不同解读——你可以自己理解。

写在前面: 闭包是被讲烂的内容,但是当我不了解的情况下,看过很多教程,听过很多道理,还是无法完全理解闭包这个东西。所以想要写一篇比较详细,前端小白也能够真正理解闭包概念的干货文章...

OB丶Koro1 ⋅ 2017/05/05 ⋅ 0

闭包block多种应用方式

闭包是一个十分强大的功能,灵活多变,便于使用;实际上闭包是一种匿名的函数. 其类型和对应的函数类型保持一致. 使用闭包,我们可以动态的改变函数或方法中的代码,从而适应不同环境下的要求. 1...

法斗斗 ⋅ 2016/06/22 ⋅ 0

【JavaScript】关于闭包

1、闭包是函数的代码在运行过程中的一个动态环境,是一个运行期的、动态的概念。 闭包(又称“词法闭包”或“函数闭包”)是一个包含了非本地变量引用环境的函数。 2、变量在语法分析阶段被初...

Aram ⋅ 2013/03/17 ⋅ 0

Swift 中的利刃,函数和闭包

Swift 中的利刃,函数和闭包 关于闭包的概念,相信有过其他语言开发经验的朋友都不会陌生了。简单来说闭包的语言特性,大大增加了我们的开发效率。而 Swift 更是将闭包运用的游刃有余,仿佛为...

法斗斗 ⋅ 2016/06/23 ⋅ 0

勇士斗恶龙:没那么复杂的Js闭包(改)

本文之前发表过一次,虽然当时也是精心书写过,但还是感觉有些问题本说明白,又走上了"把简单的事说复杂"的老毛病,所以第二次修改希望让看的人,尤其是对于闭包还心有畏惧的TX能有些收获. 内部函...

顽Shi ⋅ 2014/01/10 ⋅ 1

OC中的block与Swift中的尾随闭包的使用

girl.png   OC中的block与Swift中的尾随闭包都起到了将参数作为返回值的作用,也就是常说的回调。 1. block的使用   在OC中block主要分为三种,分别是 (1)NSConcreteGlobalBlock 全局静...

小时候De_我 ⋅ 2017/11/28 ⋅ 0

Javascript闭包入门(译文)

前言 总括 :这篇文章使用有效的javascript代码向程序员们解释了闭包,大牛和功能型程序员请自行忽略。 译者 :文章写在2006年,可直到翻译的21小时之前作者还在完善这篇文章,在Stackoverfl...

Damonare ⋅ 2017/01/21 ⋅ 0

Swift2.0语言教程之闭包

Swift2.0语言教程之闭包 Swift2.0语言闭包 闭包是自包含的函数代码块,可以在代码中被传递和使用。Swift中的闭包与C和Objective-C中的代码块(blocks)以及其他一些编程语言中的Lambda函数比...

大学霸 ⋅ 2015/07/20 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

从零开始搭建Risc-v Rocket环境---(1)

为了搭建Rocke环境,我买了一个2T的移动硬盘,安装的ubuntu-16.04 LTS版。没有java8,gcc是5.4.0 joe@joe-Inspiron-7460:~$ java -version程序 'java' 已包含在下列软件包中: * default-...

whoisliang ⋅ 19分钟前 ⋅ 0

大数据学习路线(自己制定的,从零开始学习大数据)

大数据已经火了很久了,一直想了解它学习它结果没时间,过年后终于有时间了,了解了一些资料,结合我自己的情况,初步整理了一个学习路线,有问题的希望大神指点。 学习路线 Linux(shell,高并...

董黎明 ⋅ 25分钟前 ⋅ 0

systemd编写服务

一、开机启动 对于那些支持 Systemd 的软件,安装的时候,会自动在/usr/lib/systemd/system目录添加一个配置文件。 如果你想让该软件开机启动,就执行下面的命令(以httpd.service为例)。 ...

勇敢的飞石 ⋅ 27分钟前 ⋅ 0

mysql 基本sql

CREATE TABLE `BBB_build_info` ( `community_id` varchar(50) NOT NULL COMMENT '小区ID', `layer` int(11) NOT NULL COMMENT '地址层数', `id` int(11) NOT NULL COMMENT '地址id', `full_......

zaolonglei ⋅ 36分钟前 ⋅ 0

安装chrome的vue插件

参看文档:https://www.cnblogs.com/yulingjia/p/7904138.html

xiaoge2016 ⋅ 39分钟前 ⋅ 0

用SQL命令查看Mysql数据库大小

要想知道每个数据库的大小的话,步骤如下: 1、进入information_schema 数据库(存放了其他的数据库的信息) use information_schema; 2、查询所有数据的大小: select concat(round(sum(da...

源哥L ⋅ 今天 ⋅ 0

两个小实验简单介绍@Scope("prototype")

实验一 首先有如下代码(其中@RestController的作用相当于@Controller+@Responsebody,可忽略) @RestController//@Scope("prototype")public class TestController { @RequestMap...

kalnkaya ⋅ 今天 ⋅ 0

php-fpm的pool&php-fpm慢执行日志&open_basedir&php-fpm进程管理

12.21 php-fpm的pool pool是PHP-fpm的资源池,如果多个站点共用一个pool,则可能造成资源池中的资源耗尽,最终访问网站时出现502。 为了解决上述问题,我们可以配置多个pool,不同的站点使用...

影夜Linux ⋅ 今天 ⋅ 0

微服务 WildFly Swarm 管理

Expose Application Metrics and Information 要公开关于我们的微服务的有用信息,我们需要做的就是将监视器模块添加到我们的pom.xml中: 这将使在管理和监视功能得到实现。从监控角度来看,...

woshixin ⋅ 今天 ⋅ 0

java连接 mongo伪集群部署遇到的坑

部署mongo伪集群 #创建mongo数据存放文件地址mkdir -p /usr/local/config1/datamkdir -p /usr/local/config2/data mkdir -p /usr/local/config3/data mkdir -p /usr/local/config1/l......

努力爬坑人 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部