zoukankan      html  css  js  c++  java
  • JavaScript闭包原则

    1、了解闭包(closure)必须知道,javascript的作用域(scope)问题:

    javascript的作用域问题,即变量(函数-内部函数)的作用域问题。根据javascript的语法规则,变量(函数)声明在外部即视为全局变量(函数),可以直接在任何地方调用。

    我们常用的变量分为全局变量和局部变量,而局部变量只能在函数内部调用。要实现外部调用局部变量的方法就会涉及到跨域问题,因此使用javascript的闭包函数来加以解决。

    这里有几种关于变量作用域的调用写法:

    (1)、改变全局变量

    var name="peaty";
    
    function getName(){ name='shine';  }  getName();//shine

    (2)、调用函数内部变量

    function number(){ var num=2;} number(num);//undified

    (3)、函数内部也有全局变量--javascript语法原则(无var 声明的变量视为全局变量)

    function say(){var s="you";} say(); alert(s);//you 

    2、什么是javascript的闭包原则:

    闭包原则就是把一些变量封装起来,与外部函数建立一个依赖,在全局变量与局部变量之间搭建桥梁,使外部可以轻松地访问到局部变量的函数或对象表达式。

    3、使用闭包的目的

    一个是前面提到的可以读取函数内部的变量,另一个就是让这些变量的值始终保持在内存中。

    这样做就可以协调我们有些数据作为全局变量来控制,将一些有必要不清理的数据临时保存起来。

    4、闭包函数的写法

    (1)、作为内部函数实现闭包
    
     function fun(){
    
        var n=0;
    
        nAdd=function(){n+=1}
    
        function fun2(){
          alert(n);
        }
    
        return fun2;
    
      }
    
    var result=fun(); 
    
    result();//0
    
    nAdd();
    
    result();//1,对于fun2而言fun的所有属性均可见

    5、闭包的运行原理

    var name = "xxx";
    
      var object = {
        name : "My Object",
    
     
    
        getNameFunc : function(){
          var that = this;//上下文对象,全局化
          return function(){
            return that.name;//实现修改局部变量转换为全局变量
          };
    
              }
    
     
    
      };
    
    alert(object.getNameFunc()());
  • 相关阅读:
    小米手机无法连接eclipse调试解决方案
    黏性控件的使用
    快速索引 (对View的自定义)
    侧滑面板(对viewGroup的自定义)
    安卓程序员要拿到5000和1w的薪资,分别需要掌握哪些技术?
    1、话说linux内核
    嵌入式软件工程师面试
    arm汇编之 bne与beq
    不要做浮躁的嵌入式系统工程师
    内核里面writel(readl)是如何实现的
  • 原文地址:https://www.cnblogs.com/boonya/p/2497715.html
Copyright © 2011-2022 走看看