js闭包初体验
/*
闭包的定义:一个内部函数里变量作用域生命周期延续,直接访问一个函数里面的私有属性
闭包的作用:解决变量作用域延续的问题,同时解决全局变量冲突的问题
*/ //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闭包初体验的更多相关文章
- node.js + express 初体验【hello world】
[node.js] 一个神奇的XX 呵呵 :) 不知道怎么形容他才好! [express] 是node.js 开发web应用程序的框架 开发环境:XP 大家共同进步吧 :) 一:前期准备: 1:下载 ...
- (转)js闭包初入门
先看一段JS代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 function a(){ var num = 0; function ...
- Node.js入门初体验
今天有一个类似网络爬虫的需求,本来打算用我还算熟悉的asp或者asp.NET来做这个事情,但是写了这么长时间js,asp的语法实在不喜欢,VS又早被我卸掉了,思来想去打算用一下最近比较火的Node.j ...
- Node.js 安装 初体验(1)
1.安装nodejs http://nodejs.org/download/ 自动根据系统下载自己的版本node.js 2.环境变量 windows 安装,不需要配置环境变量 mac安装后,会提 ...
- 闭包初体验 -《JavaScript面向对象编程指南》
下面是我对闭包的理解:(把他们整理出来,整理的过程也是在梳理) 参考<JavaScript面向对象编程指南> 1.首先,在理解闭包之前: 我们首先应该清楚下作用域和作用域链 作用域:每个函 ...
- 【Node.js】初体验之安装和HelloWorld
听说Node.js是个蛮吊的东东.中午休息时间有限,暂时看了下知道怎么安装和初步使用了. 1.安装: 到Node.js官网下载就可以了,才5M多点,双击后按步骤安装就可以了. 2."Hell ...
- Node.js 的初体验
例子1: 1.首先第一步 :要 下载 node.js. 官网 上可以下载 下载完后,是这个玩意. 2. 打开 node.js ,然后输入 // 引入http模块 var http = require( ...
- Node.js 网页瘸腿爬虫初体验
延续上一篇,想把自己博客的文档标题利用Node.js的request全提取出来,于是有了下面的初哥爬虫,水平有限,这只爬虫目前还有点瘸腿,请看官你指正了. // 内置http模块,提供了http服务器 ...
- 【Knockout.js 学习体验之旅】(1)ko初体验
前言 什么,你现在还在看knockout.js?这货都已经落后主流一千年了!赶紧去学Angular.React啊,再不赶紧的话,他们也要变out了哦.身旁的90后小伙伴,嘴里还塞着山东的狗不理大蒜包, ...
随机推荐
- LoadRunner之安装、破解、汉化教程(一)
安装前,把所有的杀毒软件和防火墙关闭 安装前,把所有的杀毒软件和防火墙关闭 安装前,把所有的杀毒软件和防火墙关闭........ 注意事项: 安装前,把所有的杀毒软件和防火墙关闭. 若以前安装 ...
- Jmeter分布式测试搭建(二)
Jmeter运行的时候十分耗内存和cpu,跑到500多个进程的时候,就卡死了.我们测试时,如果进行大数据量的并发测试时,单个电脑的CPU和内存可能无法承受,这个时候,我们需要进行一个分布式的测试,比如 ...
- c语言二维数组传递
c语言二维数组传递,目前我总结三种方法,以及纠正一个不能使用的方法 /********************************* * 方法1: 第一维的长度可以不指定 * * 但必须指定第二维 ...
- 一个linux的样本分析
不久前收到的一个linux样本,之前linux平台下的样本见得并不多,正好做个记录. 样本启动之后,会将自身重命名拷贝到/usr/bin下,并删除自身,如此处就将自身文件amdhzbenfi命名为us ...
- Android 编程下 ListView 的 HeaderView 和 FooterView 不可选择点击
在 ListView 里,HeaderView 和 FooterView 也占一行,与其他的 item 一样,可以点击,有索引,HeaderView 的索引为0.如果要使这两项不可点击,可以使用下面的 ...
- 让一个div在不同的显示器中永远居中
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- zookeeper + LevelDB + ActiveMQ实现消息队列高可用
通过集群实现消息队列高可用. 消息队列在项目中存储订单.邮件通知.数据分发等重要信息,故对消息队列稳定可用性有高要求. 现在通过zookeeper选取activemq leader的形式实现当某个ac ...
- 运行re-sign.jar重签名工具报错ERROR:Cannot run program "D:\sdk\tools\zipalign
今天在使用这个拖拽到具,把apk文件拖到re-sign.jar运行打开的界面,报错如下: ERROR:Cannot run program "E:\Android sdk\sdk\tools ...
- Codeforces 343D Water Tree(DFS序 + 线段树)
题目大概说给一棵树,进行以下3个操作:把某结点为根的子树中各个结点值设为1.把某结点以及其各个祖先值设为0.询问某结点的值. 对于第一个操作就是经典的DFS序+线段树了.而对于第二个操作,考虑再维护一 ...
- Poj1131-Octal Fractions
Octal Fractions Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 6669 Accepted: 3641 D ...