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);

		//小结:关于闭包的用法,以后有空再整理出来

  

  

时间: 2024-10-11 04:20:22

js闭包初体验的相关文章

(转)js闭包初入门

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

【Node.js】 初体验

1.新建一个app.js文件 2.使用npm install http 导入http模块 3.直接上代码 //引入http模块 var http = require('http'); //创建服务器 var app=http.createServer(function (request, response) { // 发送 HTTP 头部 // HTTP 状态值: 200 : OK // 内容类型: text/plain response.writeHead(200, {'Content-Typ

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

延续上一篇,想把自己博客的文档标题利用Node.js的request全提取出来,于是有了下面的初哥爬虫,水平有限,这只爬虫目前还有点瘸腿,请看官你指正了. // 内置http模块,提供了http服务器和客户端功能 var http=require("http"); // 内置文件处理模块 var fs=require('fs'); // 创建一个将流数据写入文件的WriteStream对象 var outstream=fs.createWriteStream('./1.txt'); /

我是如何初体验uglifyjs压缩JS的

一.故事总有其背景 年末将至,很多闲适的时间,于是刷刷微博,接触各种纷杂的信息——美其名曰“学习”.运气不错,遇到了一个新名词,uglifyjs. 据说是用来压缩JS文件的,据说还能优化JS,据说是基于node的,还据说比Google Closure Compiler更带感,哦?激起了我的好奇心.百之谷之,哟,相关的介绍还不少.然后折腾了个把小时,基本上知道了是个怎么回事. 我觉得吧,还是有些用的,即使是不是从事node开发的人,抽个小空,share之,于是就有了本文.人总有浮躁的时候,我也不例

Knockout.js初体验

前不久在网上看到一个轻量级MVVM js类库叫Knockout.js,觉得很好奇,搜了一下Knockout.js相关资料,也初体验了一下,顿时感觉这个框架的设计很有意思.接下来就搞清楚什么是Knockout.js Knockout.js有4个重要的概念:(一定要牢记) 1.声明绑定:使用简明易读的语法很容易地将模型(model)数据关联到DOM元素上. 2.UI界面自动刷新:当您的模型状态(model state)改变时,您的UI界面将自动更新. 3.依赖跟踪:为转变和联合数据,在你的模型数据之

vue.js 初体验

Vue.js是什么? 一个构建数据驱动的web界面的库.他不是一个全能框架,技术上重点集中在MVVM中的ViewModel层. Vue.js特点? 轻巧.高性能.可组件化 官网地址:http://cn.vuejs.org/ Vue.js初体验 引入Vue.js独立版本, 至官网下载独立版本.根据提示,开发时选择开发版本. 直接引入Vue.js到静态页面中,从数据绑定开始编写DOM部分和js部分 <div id="app"> {{message}} </div>

js随堂初体验(一)

Js初体验(-) 1 js的基础知识 A web三大标准:1 html:结构标准    2 css:表现标准  3 javascript:行为标准 B js三种书写方式:1 行内js:onclick = "alert=('AAAAA')" 2 内嵌js:在html页面中通过一对script标签,js代码写在script标签中 3 外联js:在script标签中用src属性来引入外部的js文件,但是在这堆script标签中不能写js代码,他的作用只是只是引入外联的js代码 C js初接触

0086 初识JavaScript:是什么、浏览器执行 JS(渲染引擎、解释引擎)、组成、初体验

3.1 JavaScript 是什么 JavaScript 是世界上最流行的语言之一,是一种运行在客户端的脚本语言 (Script 是脚本的意思) 脚本语言:不需要编译,运行过程中由 js 解释器( js 引擎)逐行来进行解释并执行 现在也可以基于 Node.js 技术进行服务器端编程 3.2 JavaScript的作用 表单动态校验(密码强度检测) ( JS 产生最初的目的 ) 网页特效 服务端开发(Node.js) 桌面程序(Electron) App(Cordova) 控制硬件-物联网(R

屌丝就爱尝鲜头——java8初体验

Java8已经推出,让我们看看他的魅力.让我们看看他改变较大的部分. 一.java8概述 Java8是由Oracle(甲骨文)公司与2014年3月27日正式推出的.Java8同时推出有3套语言系统,分别是Java SE8.Java SE Emebbled 8.Java ME8. Java SE8较以往的系统增强的功能有: ①增强了对集合式操作语言--lambda表达式的支持,"Lambda 表达式"(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演