JS中闭包的作用

1、执行自执行函数。某些函数可能只需要执行一次而且为了不造成全局污染。声明变量需要使用var,否则会默认添加到全局对象的属性上。或者别的函数可能会误用该属性。全局对象过于庞大的话,会影响访问速度。(变量的取值需要从原型链上遍历)

(function(value){    console.log(value)})(3);

2、作为缓存.第二次使用对象时候,可以不用新建对象。单例模式的实现等等。

var Cache=(function(){    var cache={};    return{        getObj:function(name){            if(name in cache){                return cache[name];            }            var temp=new Object(name);            cache[name]=temp;            return temp;        }    }})()

3、实现封装过程。封装对象中的变量不能直接访问,提过提供的闭包来访问。

var person=function(){    var name="no name!";    return {        getName:function(){            return this.name;        },        setName:function(value){            this.name=value;        }    }}()

4、实现面向对象

总结:闭包就是别的函数中返回出来的函数,这个函数可以访问返回该函数的函数中内部的变量!

原文地址:https://www.cnblogs.com/anthong0325/p/9297401.html

时间: 2024-10-13 10:34:50

JS中闭包的作用的相关文章

关于js中闭包的理解

1.以前很不理解js中闭包的概念及使用,下面来看一下 function foo() { var a = 123; var b = 456; return function () { return a; } } var fn = foo(); 上面的代码只能访问 a和b,但是不能修改,这是js中闭包的技术之一 function foo() { var a = 123; var b = 456; return { get_a: function () { return a; }, set_a: fu

JS中冒号的作用

转载: JS中冒号的作用1.声明对象的成员2.switch语句分支3.三元表达式 1.声明对象的成员 var Book ={    Name: '法',    Price: 100,    Discount : function(rate)   {       this.Price *= rate;    }};alert(Book.Price);Book.Discount(0.8); // 8折alert(Book.Price); 2.switch语句分支 var a = 2;switch (

js中with的作用

js中with的作用当一个对象有多个需要操作的属性或方法时,可以使用如<体>试验<script type=“text/javascript”>var o=文件.创建元素(“DIV”):(o){风格.cursor=“指针”:style.zindex=“100”:innerhtml=“aaaaa”:}文件.身体.附录子项(o):</Script ><正文>上述代码相当于<体>试验<script type=“text/javascript”>

对js中闭包,作用域,原型的理解

前几天,和朋友聊天,聊到一些js的基础的时候,有一种‘好像知道,好像又不不知道怎么讲的感觉’...于是捡起书,自己理一理,欢迎拍砖. 闭包 理解闭包首先要理解,js垃圾回收机制,也就是当一个函数被执行完后,其作用域会被收回,如果形成了闭包,执行完后其作用域就不会被收回. 如果某个函数被他的父函数之外的一个变量引用,就会形成闭包 闭包的作用,就是保存自己私有的变量,通过提供的接口(方法)给外部使用,但外部不能直接访问该变量. 例子(使用闭包): var test=(function(){ var

js中闭包和对象相关知识点

学习js时候,读到几篇不错的博客.http://www.cnblogs.com/yexiaochai/p/3802681.html一,作用域 和C.C++.Java 等常见语言不同,JavaScript 的作用域不是以花括号包围的块级作用域(block scope),这个特性经常被大多数人忽视,因而导致莫名其妙的错误.例如下面代码,在大多数类C 的语言中会出现变量未定义的错误,而在JavaScript 中却完全合法: if(true) { var somevar = 'value'; } con

js中闭包作用举例

模拟实现类的私有属性 function Boy(name){ this.name = name; var sex = 'boy'; this.saySex = function(){ console.log("my sex is "+sex) }; } var xiaoming = new Boy('xiaoming'); console.log(xiaoming.name); console.log(xiaoming.sex); xiaoming.saySex();VM344:16

js中return的作用及用法

这里面的return含有一些细节知识: 例如:onClick='return add_onclick()'与 onClick='add_onclick()'的区别 JAVASCRIPT在事件中调用函数时用return返回值实际上是对window.event.returnvalue进行设置. 而该值决定了当前操作是否继续.当返回的是true时,将继续操作.当返回是false时,将中断操作. 而直接执行时(不用return).将不会对window.event.returnvalue进行设置所以会默认

JS中闭包的介绍

闭包的概念 闭包就是能够读取其他函数内部变量的函数. 一.变量的作用域 要理解闭包,首先必须理解Javascript特殊的变量作用域. 变量的作用域无非就是两种:全局变量和局部变量. Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量. Js代码 var n=999; function f1(){ alert(n); } f1(); // 999 另一方面,在函数外部自然无法读取函数内的局部变量. Js代码 function f1(){ var n=999; } alert(

JS 中闭包的变量 闭包与this

闭包与变量: 作用域链的一个副作用,闭包只能取得包含函数中任何变量的最后一个值.别忘了闭包所保存的是整个变量对象,而不是某个特殊的变量. function fn1(){ //创建一个数组 var arr = new Array(); //为数组赋值,此时i是保存在fn1 这个作用域中 for (var i = 0; i <10; i++) { arr[i] = function(){ return i } } return arr; } var fs = fn1(); for (var i =