• 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();
        };
        
    })();
    

      

  • 相关阅读:
    浅谈MIPS地址对齐问题
    一些使用的linux库
    linux curl网络库的使用方法
    一些json在js和c++ jsoncpp的操作
    Java开发小技巧(六):使用Apache POI读取Excel
    Java开发小技巧(五):HttpClient工具类
    vue-router 组件复用问题
    Vuejs之开发环境搭建
    Java开发小技巧(四):配置文件敏感信息处理
    Java开发小技巧(三):Maven多工程依赖项目
  • 原文地址:https://www.cnblogs.com/koto/p/5275646.html
Copyright © 2020-2023  润新知