zoukankan      html  css  js  c++  java
  • JS复习:第七章

    第七章  函数表达式

    一、定义函数的方式有两种:函数声明和函数表达式。

    1.函数声明:

    function functionName(arg0 , arg1 , arg2){
        //函数体...
    }

    函数声明的一个重要特征就是函数声明提升,在读取代码之前会先读取函数声明。意味着可以将函数声明放在调用代码之后。

    2.函数表达式:

    var functionName = function(arg0 , arg1 , arg2){
    //函数体...
    }

    创建一个函数并将它赋值给一个变量,这种情况下创建的函数叫做匿名函数。因为function后面没有标识符。函数表达式与其他表达式一样使用前必须先赋值。

    二、匿名函数的作用:

    1.把函数当成值来用时,可以使用匿名函数。

    2.

    三、闭包

      闭包是指有权访问另一个函数作用域中的变量的函数。

      如下代码:

    function createFunction(){
      var result = new Array();
      for(var i = 0 ; i < 10 ; i++){
        result[i] = function(){
          return i;
        };
      }
      return result;
    }

      会有一个明显的问题是返回的所有i值都为10,即数组的最后一个i。

      解决方法是:

    function createFunction(){
      var result = new Array();
      for(var i = 0 ; i < 10 ; i++){
        result[i] = function(num){
          return function(){
            return num;
          };
        }(i);
        }
      return result;
    }

    四、私有变量

      私有变量包括函数的参数、局部变量和在函数内部定义的其他函数。在函数内部可以访问这个变量,但在函数外部则不能访问它们。如果在这个函数内部创建一个闭包,那么闭包通过自己的作用域也可以访问这些变量。有两种在对象上创建特权方法的方式。第一种是在构造函数中定义特权方法,基本模式如下:

    function MyObject(){
    	//私有变量和私有函数
    	var privateVariable = 10;
    	function privateFunction(){
    		return false;
    	}
    	//特权方法
    	this.publicMethod = function(){
    		privateVariable++;
    		return privateFunction();
    	};
    }function MyObject(){
    	//私有变量和私有函数
    	var privateVariable = 10;
    	function privateFunction(){
    		return false;
    	}
    	//特权方法
    	this.publicMethod = function(){
    		privateVariable++;
    		return privateFunction();
    	};
    }
    

      

    第二种:在私有作用域中定义私有变量或函数,同样也可以创建特权方法,其基本模式如下:

    (function(){
       //私有变量和私有函数
       var privateVariable = 10 ;
       function privateFunction(){
           return  false;     
        }   
        //构造函数
        MyObject = function(){
        };
        //公有、特权方法
        MyObject.prototype.publicMethod = function(){
            privateVariable++;
            return privateFunction();
        };
        
    })();
    

      

  • 相关阅读:
    TCP/IP
    Socket通信
    Dubbo详解
    高并发详解
    P3-DataBase
    JAVA基础学习之路(十)this关键字
    [SHELL]输出目录下所有的可执行文件,批量创建用户
    JAVA基础学习之路(八)[1]String类的基本特点
    [MYSQL][2]索引
    [MYSQL][1]创建,修改,删除表
  • 原文地址:https://www.cnblogs.com/koto/p/5275646.html
Copyright © 2011-2022 走看看