重操JS旧业第十弹:闭包

闭包是js最难理解,也是最蛋疼的一个名词,仿佛只可意会不可言传一样,有人说闭包说白了就是函数嵌套,也有人说闭包就是函数能够访问函数外部的变量,而内部的外部访问不了;

貌似都非常有道理,其实仔细想来只不过说到了闭包的一些表现特性,以及闭包存在的作用和道理。

好吧,真的是很难理解,以后理解了再写55555555555

时间: 2024-10-05 23:54:43

重操JS旧业第十弹:闭包的相关文章

重操JS旧业第五弹:函数

函数在任何编程语言中起着非常重要的位置,因为他是功能的最小单元,在js中函数是一种类型 Function 1 申明与定义 显示声明:function cc(){};函数名其实是函数的一个指针,函数名某种意义上也就是function类型的一个变量,对于显示什么的函数,不管函数在文档什么位置都糊被js引擎预先加载到编译环境栈中: 也就是申明自动提前 函数表达式:var fun=function(){};对于表达式函数,起本质上变量指向了一个函数,但是呢,这个函数申明不会被提前加载到js引擎中提前编译

重操JS旧业第六弹:基本类型包装

在前面已经知道js中的类型有boolean,string,number,undefined,function,object,其中boolean,number,string为值类型.所谓的基本类型包装,是将基本类型中值类型包装为引用类型与之 相对应的是Boolean,Number,String,其主要作用为值类型增加相应的操作方法,因为值类型本身没有方法,方法是对象类型才具有的. 1包装原理 临时封装,如var str='hello';var str2=str.subString(2):llo;其

重操JS旧业第三弹:Array

数组在任何编程语言中都是非常重要的,因为函数在最大程度上代表了要实现的功能,而数组则是这些函数所要操作的内存一部分. 1 构建数组 js与其他非脚本语言的灵活之处在于要实现一个目标它可能具有多种方式,如数组的定义有2中,对象的定义一般也有2中,而类却又多种,花样很多,目的呢都是为了节省内存,适合不同应用场景 1)使用构造函数 var arr=new Array(); 2)使用字面量 var arr=[]; 2 检测数组类型 在前面我们已经有了非引用的typeof,其应用于所有类型,属于广谱类型检

重操JS旧业第四弹:Date

1 Date原理 Date类型表示时间,js中采用UTC国际协调时间,以1971年1月1日0分0秒0微秒开始,经过的毫秒数来表示时间,比如一年的时间计算 1分:1000*60: 1小时:1000(毫秒)*60*60: 1年:1000*60*60*24*365=31 536 000 000,如果是1千年则直接添加000,这就是js中时间的表示原理 2 转换 将字符串解析为时间 Date.parse():该函数将类似:‘6/23/2005’这类日期解析为毫秒数,如果不成功返回NaN: 然后再使用va

重操JS旧业第八弹:面向对象与继承

js里面没有语言语法层面的继承机制,但这并不意味着js就不能实现继承,利用js属性和方法动态性来模拟实现继承,通过总结大概有如下方法实现: 1 原型链继承 我们知道原型在对象中扮演着重要的角色,函数本身自带原型对象,通过对象创建便让对象拥有指向原型对象的指针,再次原型属性和方法的搜索覆盖机制,以及原型属性和方法的动态性 实现原理:手动将对象的原型对象修改为要继承的对象,如: function Person(name,sex){ this.name=name; Person.prototype.s

重操JS旧业第九弹:函数表达式

函数表达式,什么概念,表达式中的函数表达式. 1 函数申明 function 函数名([函数参数]){ //函数体 } js中无论像这样的显示函数什么放在调用之前还是调用之后,都不影响使用,因为js解释引擎会将函数声明提前化,这点很好理解: 2 函数表达式 var functionV=function 函数名([函数参数]){ //函数体 }: 这种方式的一个变量指向了一个函数,仅此而已.js引擎只会把他当作一个函数类型的变量来处理,仅此而已. 3 递归调用 我们知道函数名仅仅是指向函数的指针,

重操JS旧业第二弹:数据类型与类型转换

一 数据类型 1 js中的数据类型 1.1 数据类型列举 1)number类型 2)boolean类型 3)string类型 4)对象类型 5)函数类型 6)undefined类型 1.2 数据类型获取 typeof :注意这个并不是一个函数,而是一个操作符,怎么使用? typeof 'asd'  结果:string 2 各种类型详解 2.1 number类型 2.1.1概念理解:即所有实数,包括整型,浮点型,这个很好理解,但是有个特例 2.1.2特殊NaN:NaN本身是一个number类型,但

重操JS旧业第一弹:Script与JS加载

不管js被包装成什么样子,最终交给浏览器执行的js都是原生的,都离不开原生js的原理. Script标签纸html中用来加载js的标签,我们知道js可以是来自外部,本地,或者内部一段代码,在这里只讨论来自外部的加载,对于一个随时进行网络数据交换的浏览器而言,网络请求必然是异步执行的,自然的js文件一般来说异步执行比较好,不容易造成UI卡顿,但是Script标签默认加载js是同步,阻塞式的,也就是说默认情况下浏览器按照从上至下,从左自右的方式解释执行脚本,对于同步请求js文件会造成js文件下载完成

js操作IE浏览器弹出浏览文件夹

如图所示: 可以返回目录路径. 操作如下: function BrowseFolder(){ try{ var Message = "请选择文件夹"; //选择框提示信息 var Shell = new ActiveXObject( "Shell.Application" ); var Folder = Shell.BrowseForFolder(0,Message,0x0040,0x11);//起始目录为:我的电脑 //var Folder = Shell.Bro