for循环,定时器,闭包混合一块的那点事. 1,对于一个基本的for循环,顺序输出变量值. for(var i = 1; i < 4; i++){ console.log(i);//结果不多说了吧 } 2,如果for循环中有定时器,如下代码. for (var i = 1; i < 4; i++) { setTimeout(function() { console.log(i);//3个4 }, 3000); } 初衷想要3s后输出1,2,3.但是3s后,输出3个4.原因是定时器的异步执行,f…
1,对于一个基本的for循环,顺序输出变量值. for(var i = 1; i < 4; i++){ console.log(i);//结果不多说了吧 } 2,如果for循环中有定时器,如下代码. for (var i = 1; i < 4; i++) { setTimeout(function() { console.log(i);//3个4 }, 3000); } 初衷想要3s后输出1,2,3.但是3s后,输出3个4.原因是定时器的异步执行,for循环的执行速度很快,当真正执行到函数体时…
什么是闭包 <你不知道的JS>里有对闭包的定义:"当函数可以记住并访问所在的词法作用域,即使函数是在当前作用域之外执行,这就产生了闭包." 讲闭包是啥的太多了...就一句带过...在我的认知中,就是函数套函数,内部的函数能直接访问外部函数的变量.而外部函数的变量,就能被隐藏起来.从而它的优点是能把这些变量隐藏起来,但它的缺点也是这些隐藏的变量难以释放... 总而言之,就是函数里内嵌函数,当这个函数访问外函数的变量时,就可以叫闭包,而真正实现功能呢,就是在外函数return…
在javascritp中,有两个关于定时器的专用函数,分别为: 1.倒计定时器:timename=setTimeout(“function();”,delaytime); 2.循环定时器:timename=setInterval(“function();”,delaytime); 尤其注意的是setInterval,在ie中会失效,特别是想用 它来反复访问一个地址的时候,ie会发现你访问的是一个已经加载过的地址,于是就不再访问,而从本地缓存中加载.所以要在反复访问的地址中加入随机数.我 是这么加…
看一段比较经典的错误代码: // 希望获取页面上的所有div,在点击的时输出对应的编号 var oDom = document.querySelectorAll("div"); // 事实上,所有的div被点击输出的都是div的个数加1 for (var i = 0; i <= oDom.length-1; i++) { oDom[i].addEventListener("click", function log() { console.log(i+1); }…
][]string{ { { "邀请码是什么", "我没有邀请码", "这个邀请码我可以随便填吗", "邀请码可以填他的手机号吗", "没有邀请码注册不了吗", }, { "你好,邀请码是您推荐人的会员编号,如果您没有推荐人的话,可以选择系统推荐,随意选择一个编号完成注册.", }, }, { { "我要注册账号,从哪里注册", "从哪注册呀",…
有时候需要循环执行某个任务,最简单的就是用thread.Timer. 谷歌了一下,发现大家竟然用sleep 来实现循环,也不知道谁想的这个方法,竟然很少有人想到join一下,很奇怪. # -*- coding: utf-8 -*- ''' Created on 2016年4月25日 @author: 55Haitao ''' import threading class Person(object): def __init__(self): print "init person" de…
例: var setTime = setInterval(function () { ff(); //每秒调用的方法函数 }, 1000); //1000毫秒为1秒 //可使用 clearInterval(setTime); 清除定时器 /*倒计时*/ function ff() { var ti = dateTime1 - dateTime; //目标毫秒值减去当前时间毫秒值 (当前毫秒值最好后台获取) var hour = parseInt(ti / 1000 / 60 / 60 % 24)…
@Scheduled 注解 用于定时循环执行任务 例如: @Scheduled(cron="0 */10 * * * ?") 表示每隔十分钟执行一次 每隔5秒执行一次:"*/5 * * * * ?" 每隔1分钟执行一次:"0 */1 * * * ?" 每天23点执行一次:"0 0 23 * * ?" 每天凌晨1点执行一次:"0 0 1 * * ?" 每月1号凌晨1点执行一次:"0 0 1 1 *…
考虑一下以下的代码片段: for (var i = 0; i < 5; i++) { var btn = document.createElement('button'); btn.appendChild(document.createTextNode('Button ' + i)); btn.addEventListener('click', function(){ console.log(i); }); document.body.appendChild(btn); } (a)当用户点击“B…
Es5 function box(){ var arr = []; ;i<;i++){ arr[i] = (function(num){ //自我执行,并传参(将匿名函数形成一个表达式)(传递一个参数) return num; //这里的num写什么都可以 })(i); //这时候这个括号里面的i和上面arr[i]的值是一样的都是取自for循环里面的i } return arr; } 在for循环里面的匿名函数执行 return i 语句的时候,由于匿名函数里面没有i这个变量,所以这个i他要从父…
对于for循环的闭包问题的理解,认为需要理解函数中的变量的作用域链的概念 另外提及下变量提升的概念 如下例子: var ar = [];for(var i=1:i<10; i++){ ar[i] = function(){ console.log(i); }} ar[5]       // 打印为10:因为有闭包函数的问题 理解好闭包,应该理解好函数中变量的作用域概念. 首先,函数是有自己的执行环境(context)概念,函数的变量,就有变量作用域链.函数中,可以声明自己的局部变量,函数外是访问…
我们先看一个正常的for循环,普通函数里面有一个for循环,for循环结束后最终返回结果数组 function box(){ var arr = []; for(var i=0;i<5;i++){ arr[i] = i; } return arr; } alert(box()) //正常情况不需要闭包,就可以达到预期效果,输出结果为一个数组0,1,2,3,4 有时我们需要在for循环里面添加一个匿名函数来实现更多功能,看下面代码 //循环里面包含闭包函数 function box(){ var…
最近在读一本进阶的JavaScript的书<你不知道的JavaScript(上卷)>,里面分析了很多基础性的概念. 可以更全面深入的理解JavaScript深层面的知识点. 一.函数作用域 1)函数作用域 就是作用域在一个“Function”里,属于这个函数的全部变量都可以在整个函数的范围内使用及复用. function foo(a) { var b = 2; function bar() { // ... } var c = 3; } bar(); // 失败 console.log( a,…
一.函数作用域 1.函数作用域 就是作用域在一个“Function”里,属于这个函数的全部变量都可以在整个函数的范围内使用及复用. function foo(a) { var b = 2; function bar() { // ... } var c = 3; } bar(); // 失败 console.log( a, b, c ); // 三个全都失败 上面的“foo”函数内的几个标识符,放到函数外面访问就都会报错.…
Swift语法基础入门三(函数, 闭包) 函数: 函数是用来完成特定任务的独立的代码块.你给一个函数起一个合适的名字,用来标识函数做什么,并且当函数需要执行的时候,这个名字会被用于“调用”函数 格式: func 函数名称(参数名:参数类型, 参数名:参数类型...) -> 函数返回值 { 函数实现部分 } 没有参数没有返回值 可以写为 ->Void 可以写为 ->() 可以省略 Void.它其实是一个空的元组(tuple),没有任何元素,可以写成() func say() -> V…
一.前言 对于 JavaScript 来说,闭包是一个非常强大的特征.但对于刚开始接触的初学者来说它又似乎是特别高深的.今天我们一起来揭开闭包的神秘面纱.闭包这一块也有很多的文章介绍过了,今天我就浅谈一下自己对闭包的的一些理解,希望能提供一点鄙陋的见解帮助到正在学习的朋友.该文章中能使用口语化的我将尽量使用口语化的叙述方式,希望能让读者更好理解,毕竟文章写出来宗旨就是要让人读懂.文章难免有不足之处还希望帮忙指出. 二.Javascript 的作用域链 在了解闭包之前,我们先来看看几个准备知识.…
一.作用域 作用域共有两种主要的工作模型:第一种是最为普遍的,被大多数编程语言所采用的词法作用域,另外一种叫作动态作用域: JavaScript所采用的作用域模式是词法作用域. 1.词法作用域 词法作用域意味着作用域是由书写代码时函数声明的位置来决定的.编译的词法分析阶段基本能够知道全部标识符在哪里以及是如何声明的,从而能够预测在执行过程中如何对它们进行查找. JavaScript 中有两个机制可以"欺骗"词法作用域: eval(..):可以对一段包含一个或多个声明的"代码&…
JavaScript闭包.是JS开发project师必须深入了解的知识. 3月份自己曾撰写博客<JavaScript闭包>.博客中仅仅是简单阐述了闭包的工作过程和列举了几个演示样例,并没有去刨根问底.将其弄明确. 如今随着对JavaScript更深入的了解,也刚读完<你不知道的JavaScript(上卷)>这本书,所以乘机整理下.从底层和原理上去刨一下. JavaScript并不具有动态作用域,它仅仅有词法作用域. 词法作用域是在写代码或者说定义时确定的.而动态作用域是在运行时确定…
前面一片文章讲到过一点函数,了解到每声明一个函数就会产生一个作用域.而外面的作用域访问不了里面的作用域(把里面的变量和函数隐藏起来),而里面的可以访问到外面的.对于隐藏变量和函数是一个非常有用的技术. 基于作用域隐藏的方法叫做最小授权或最小暴露原则. 这个原则是指在软件设计中,应该最小限度的暴露必要内容,而将其内容都隐藏起来,比如某个模块或对象得API设计.隐藏变量和函数可以解决同名标识符的之间的冲突,冲突会导致变量的意外覆盖. 例如: var a = 2; function foo(){ va…
关于闭包,初学者会被绕的晕头转向,在学习的路上也付出了很多精力来理解. 让我们一起来揭开闭包神秘的面纱. 闭包晦涩的定义 看过很多关于闭包的定义,很多讲的云里雾里,晦涩难懂.让不少人以为闭包是多么玄乎的东西.在我看过的所有书籍中,我更喜欢<你不知道的javascript(上卷)>的定义: 当函数可以记住并访问所在的词法作用域时,就产生了闭包,或者说函数在创建时的词法作域之外执行. 通俗的来说(不严谨): 就是函数套函数,子函数可以有权访问父函数的变量.父函数的父函数的变量.一直到全局变量.子函…
1 如何产生闭包? 当一个嵌套的内部(子)函数引用了嵌套的外部(父)函数的变量(函数)时, 就产生了闭包(closure) 2 闭包到底是什么? 使用chrome调试查看 理解一: 闭包是嵌套的内部函数 理解二: 包含被引用变量(函数)的对象 注意: 闭包存在于嵌套的内部函数中 3 产生闭包的条件? 函数嵌套 内部函数引用了外部函数的数据(变量/函数) 4 常见的闭包使用形式? 4.1 将函数作为另一个函数的返回值 // 1. 将函数作为另一个函数的返回值 function fn1() { va…
1 作用域是什么 1.1 编译原理 分词/词法分析(Tokenizing/Lexing) 将由字符组成的字符串分解成(对编程语言来说)有意义的代码块,这些代码块被称为词法单元(token). 解析/语法分析(Parsing) 这个过程是将词法单元流(数组)转换成一个由元素逐级嵌套所组成的代表了程序语法结构的树.这个树被称为"抽象语法树"(Abstract Syntax Tree,AST). 代码生成 将AST(抽象语法树)转换为可执行代码的过程称被称为代码生成 1.2 理解作用域 1.…
闭包理解 1.  如何产生闭包?    *当一个嵌套的内部(子)函数引用了嵌套的外部(父)函数的变量(函数)时,产生闭包 2.  闭包到底是什么?    * 使用Chrome调试查看    * 理解一:闭包是嵌套的内部函数(绝大部分人)    * 理解二:包含被引用变量(函数)的对象(极少数人)    * 注意:闭包存在于嵌套的内部函数中 3.  产生闭包的条件?    * 函数嵌套    * 内部函数引用了外部函数的数据(变量/函数)    * 执行函数定义(比如执行外部函数时) (执行函数定…
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title>无缝滚动</title> </head> <style type="text/css"> .row{ width: 1298px; height: 400px; border: 1px solid; box-sha…
现在大家应该都看到过焦点图轮播的效果,这个效果是什么样我就不截图了.昨天做练习,练习要求是使用iscroll实现焦点图的无限循环滚动,并且当手指触摸焦点图后,停止焦点图的循环滚动.第一次接触iscroll,仿照iscroll官方文档的demo,迅速做了一个焦点图自动滚动的例子,但……是……问题来了,iscroll的官方文档中没有说怎么实现无限循环,不会吧,应该有吧,我抱着怀疑的心态,找啊找,官方文章找了好几个版本,每个版本都看了1.2遍,没有……真的没有……啊,那怎么办…….看来只能自己想了,可…
.header { cursor: pointer } p { margin: 3px 6px } th { background: lightblue; width: 20% } table { text-align: center; margin-top: 20px; margin-left: 10px; margin-bottom: 20px } a { cursor: pointer; text-decoration: none; color: gray } a:hover { text…
转载▼ 标签: it   js闭包的作用域以及闭包案列的介绍:   首先我们根据前面的介绍来分析js闭包有什么作用,他会给我们编程带来什么好处? 闭包是为了更方便我们在处理js函数的时候会遇到以下的几种情况:   列1: function f1(){var a=1;f2();} function f2(){return a;} f1();//a没有定义   或者说我想调用一个全局变量的时候却发现不能调用,或者没有这个变量,没有定义这个变量,还要在想调用的时候不能重复出现,怎么办呢?所以就有了闭包…
一.前言 闭包是基于词法作用域(  和动态作用域对应,词法作用域是由你写代码时,将变量写在哪里来决定的,因此当词法分析器处理代码时,会保持作用)书写代码时所产生的自然结果,甚至不需要为了利用闭包而有意地创建闭包.闭包的创建和使用在动态语言的代码中随处可见.你缺少的只是识别,拥抱和使用闭包的思维. 当函数可以记住并访问所在的词法作用域,即使函数在当前词法作用域之外执行.就产生了闭包. 一般情况下,当函数执行完毕,垃圾回收机制会期待函数的整个内部作用域被销毁,但当闭包存在时,会阻止这件事情的发生,事…
在javascritp中,有两个关于定时器的专用函数,分别为: 1.倒计定时器:timename=setTimeout("function();",delaytime);2.循环定时器:timename=setInterval("function();",delaytime); 第一个参数“function()”是定时器触发时要执行的动作,可以是一个函数,也可以是几个函数,函数间用“:”隔开即可.比如要弹出两个警告窗口,便可将“function();”换成“aler…