/*
闭包的定义:一个内部函数里变量作用域生命周期延续,直接访问一个函数里面的私有属性
闭包的作用:解决变量作用域延续的问题,同时解决全局变量冲突的问题
*/ //1、定义内部函数,私有函数
function sum(){ //函数是一种数据类型
var a = 100;
//内部函数
function get(){
return a;
}
return get;
} var count = sum(); //返回的是一种function的数据类型 /*
2.闭包的第二种形态:回调函数,属性和方法的外调,
插件开发中常用,比如经典的jQuery,大公司需要开发的插件等等
*/ function tzEvent(id,event,callback){
var title = "我是一个窗口哦!";
document.getElementById(id)["on"+event] = function(){
console.log(this.innerHTML);
if(callback) callback(title);
};
} tzEvent("btn","click",function(title){
console.log(title);
}); //3.function是一种数据类型,在调用()的时候编译和运行函数体的内容
function test(){
var arr = [];
for(var i=0;i<3;i++){
/*
小小作用域,会把function赋值给arr,
但是i值不会return,因为没有被调用
而且i的值最后的结果会被牵引约束
*/
arr[i] = function(){
return i;
}
}
return arr;
} var arr1 = test();
console.log(arr1[0]()+"---"+arr1[1]()+"---"+arr1[2]());
//结果是 3---3---3 具体运行过程可以再谷歌浏览器控制台debug /*4.闭包最好的表现形式,是一个及时函数
解决一个全局变量互相牵引或者约束的行为 定义变量,难免会重名,在开发中除非
万不得已的情况是不允许使用全局变量的,
即使使用也需要定义特殊的名字,防止全局污染
*/
(function(b){
var a = 100;
console.log(a+"==="+b)
})(200); //小结:关于闭包的用法,以后有空再整理出来

  

  

js闭包初体验的更多相关文章

  1. node.js + express 初体验【hello world】

    [node.js]  一个神奇的XX 呵呵 :) 不知道怎么形容他才好! [express] 是node.js 开发web应用程序的框架 开发环境:XP 大家共同进步吧 :) 一:前期准备: 1:下载 ...

  2. (转)js闭包初入门

    先看一段JS代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 function a(){             var num = 0;             function  ...

  3. Node.js入门初体验

    今天有一个类似网络爬虫的需求,本来打算用我还算熟悉的asp或者asp.NET来做这个事情,但是写了这么长时间js,asp的语法实在不喜欢,VS又早被我卸掉了,思来想去打算用一下最近比较火的Node.j ...

  4. Node.js 安装 初体验(1)

    1.安装nodejs http://nodejs.org/download/  自动根据系统下载自己的版本node.js 2.环境变量 windows 安装,不需要配置环境变量   mac安装后,会提 ...

  5. 闭包初体验 -《JavaScript面向对象编程指南》

    下面是我对闭包的理解:(把他们整理出来,整理的过程也是在梳理) 参考<JavaScript面向对象编程指南> 1.首先,在理解闭包之前: 我们首先应该清楚下作用域和作用域链 作用域:每个函 ...

  6. 【Node.js】初体验之安装和HelloWorld

    听说Node.js是个蛮吊的东东.中午休息时间有限,暂时看了下知道怎么安装和初步使用了. 1.安装: 到Node.js官网下载就可以了,才5M多点,双击后按步骤安装就可以了. 2."Hell ...

  7. Node.js 的初体验

    例子1: 1.首先第一步 :要 下载 node.js. 官网 上可以下载 下载完后,是这个玩意. 2. 打开 node.js ,然后输入 // 引入http模块 var http = require( ...

  8. Node.js 网页瘸腿爬虫初体验

    延续上一篇,想把自己博客的文档标题利用Node.js的request全提取出来,于是有了下面的初哥爬虫,水平有限,这只爬虫目前还有点瘸腿,请看官你指正了. // 内置http模块,提供了http服务器 ...

  9. 【Knockout.js 学习体验之旅】(1)ko初体验

    前言 什么,你现在还在看knockout.js?这货都已经落后主流一千年了!赶紧去学Angular.React啊,再不赶紧的话,他们也要变out了哦.身旁的90后小伙伴,嘴里还塞着山东的狗不理大蒜包, ...

随机推荐

  1. 时间模块。。time

  2. Java堆外内存的使用

    堆外内存的回收见HeapByteBuffer和DirectByteBuffer以及回收DirectByteBuffer 基本类型长度 在Java中有很多的基本类型,比如: byte,一个字节是8位bi ...

  3. maven 各种用途

    1.maven 管理项目编译 作为项目编译代码管理工具,可以方便的进行编译集成. 2. maven 扩展单元测试 扩展对接junit可以方便进行单元测试 3.maven profiles各种devel ...

  4. node EventEmitter 注册事件

    var EventEmitter = require("events").EventEmitter var event = new EventEmitter() event.on( ...

  5. 编写css相关注意事项以及小技巧

    一.小技巧 1.对于开始写网站css之前一般都要对css进行重置(养成写注释的习惯): ;;} body{font-size:16px;} img{border:none;} li{list-styl ...

  6. 【转】浅谈 C++ 中的 new/delete 和 new[]/delete[]

    在 C++ 中,你也许经常使用 new 和 delete 来动态申请和释放内存,但你可曾想过以下问题呢? new 和 delete 是函数吗? new [] 和 delete [] 又是什么?什么时候 ...

  7. MFC 单文档 根据数据 绘图

    以VS2015中创建SDI为例 选择生成的类为:C***View,基类为CView,***为项目名 在***Doc.h和***Doc.cpp中创建数据模型,在***View.cpp的OnDraw()中 ...

  8. 《HBase实战》

    对,我正在研读这本书,今天开始,我希望我看完后能有收获和大家分享,这个日志作为开始,勉励自己! 对,我应该静下心,做一些我更喜欢的事情,不能在自我陶醉中迷失! 断断续的看,到今天大概把这本书看完了,没 ...

  9. JQuery EasyUI window 用法

    var $win; $win = $('#test-window').window({ title: '添加课程设置信息', width: 820, height: 450, top: ($(wind ...

  10. Windows和Linux(Ubuntu)下安装Scala及ScalaIDE

    1.下载 1.1Scala下载 Windows版:http://www.scala-lang.org/download/ Linux版:http://www.scala-lang.org/downlo ...