zoukankan      html  css  js  c++  java
  • JavaScript笔记 第十六章 匿名函数和闭包

    1.匿名函数

    2.闭包

      匿名函数就是没有名字的函数,闭包是可访问一个函数作用域里变量的函数。

    一、匿名函数

    //普通函数
    function getName() {
    	return 'name';
    }
    alert(getName());
    
    //匿名函数
    function () {				//单独的匿名函数,是无法运行的
    	return 'name';			//就算能运行,也无法调用,因为没有名称
    }
    
    //把匿名函数赋值给变量
    var getName= function () {
    	return 'name';
    };
    
    //通过自我执行来执行匿名函数
    (function () {					//(匿名函数)();	第一圆括号放匿名函数,第二个圆括号执行
    	alert('name');
    })();
    
    
    (function () {
    	alert('name');
    })();
    
    
    //把匿名函数自我执行的返回值赋给变量
    var getName= (function () {
    	return 'name';
    })();
    
    alert(getName);
    

      

    二、闭包

      闭包是指有权访问另一个函数作用域中的变量的函数, 创建闭包的常见的方式, 就是在一个函数内部创建另一个函数,通过另一个函数访问这个函数的局部变量。

    //通过闭包返回局部变量
    function getAge() {
    	var age= 100;
    	return function () {
    		return age;
    	};
    }
    
    alert(getAge()());
    

     使用闭包有一个优点, 也是它的缺点: 就是可以把局部变量驻留在内存中, 可以避免使 用全局变量。(全局变量污染导致应用程序不可预测性,每个模块都可调用必将引来灾难, 所以推荐使用私有的,封装的局部变量)。

      

    //使用匿名函数实现局部变量驻留内存中从而累加
    function getAge() {
    	var age = 100;
    	return function () {
    		age++;
    		return age;
    	};
    }
    

    PS:由于闭包里作用域返回的局部变量资源不会被立刻销毁回收,所以可能会占用更 多的内存。过度使用闭包会导致性能下降,建议在非常有必要的时候才使用闭

    包。

  • 相关阅读:
    【6.24校内test】T1 江城唱晚
    【6.20校内test】
    【洛谷p1983】车站分级
    【洛谷p2239】螺旋矩阵
    【6.18校内test】T2分数线划定
    【6.18校内test】T1多项式输出
    【洛谷p1981】表达式求值
    【洛谷p1077】摆花
    【洛谷p1158】导弹拦截
    博客园 api
  • 原文地址:https://www.cnblogs.com/xchit/p/JavaScript_16.html
Copyright © 2011-2022 走看看