文档章节

闭包

LinearLaw
 LinearLaw
发布于 2017/04/24 21:34
字数 231
阅读 17
收藏 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)利用闭包优化斐波那契数列计算,结合缓存原理

——待更新

© 著作权归作者所有

共有 人打赏支持
上一篇: Vuex整理
下一篇: 浅析继承方式
LinearLaw
粉丝 4
博文 36
码字总数 43561
作品 0
深圳
个人站长
私信 提问
Swift 闭包

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

追逐iOS
2017/11/27
0
0
用9种办法解决 JS 闭包经典面试题之 for 循环取 i

闭包 正确的说,应该是指一个闭包域,每当声明了一个函数,它就产生了一个闭包域(可以解释为每个函数都有自己的函数栈),每个闭包域(Function 对象)都有一个 function scope(不是属性),function ...

Jack088
12/10
0
0
闭包block多种应用方式

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

法斗斗
2016/06/22
4
0
swift4.1 系统学习十一 闭包

// // main.swift // swift11(闭包) // // Created by iOS on 2018/10/10. // Copyright © 2018年 weiman. All rights reserved. // import Foundation /* 闭包 闭包是swift中比较重要的一部......

小曼Study
10/10
0
0
Swift2.0语言教程之闭包

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

大学霸
2015/07/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

[springBoot系列]--springBoot注解大全

一、注解(annotations)列表 @SpringBootApplication:包含了@ComponentScan、@Configuration和@EnableAutoConfiguration注解。其中@ComponentScan让spring Boot扫描到Configuration类并把它加......

Jack088
9分钟前
0
0
tomcat编译超过64k大小的jsp文件报错原因

  今天遇到一个问题,首先是在tomcat中间件上跑的web项目,一个jsp文件,因为代码行数实在是太多了,更新了几个版本之后编译报错了,页面打开都是报500的错误,500的报错,知道http协议返回...

SEOwhywhy
30分钟前
2
0
flutter http 请求客户端

1、pubspec文件管理Flutter应用程序的assets(资源,如图片、package等)。 在pubspec.yaml中,通过网址“https://pub.dartlang.org/packages/http#-installing-tab-”确认版本号后,将http(0...

渣渣曦
30分钟前
0
0
Django基本命令及moduls举例

一、Django基本命令 1.创建项目 django-admin.py startproject mysite 创建后的项目结构:- mysite - mysite #对整个程序进行配置 - init #导入包专用- settings ...

枫叶云
45分钟前
7
0
zabbix安装

rpm -ivh http://repo.webtatic.com/yum/el6/latest.rpm 安装jdk rpm -ivh (自行在网上下载rpm包) 安装php并修改相应参数 yum -y install php56w php56w-gd php56w-mysqlnd php56w-bcmath......

muoushi
46分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部