JavaScript引用类型函数实例详解

  

本文实例讲述了JavaScript引用类型函数。分享给大家供大家参考,具体如下:

  

  

函数是对象,函数名是指针:每个函数都是函数类型的实例。由于函数是对象,因此函数名是一个指向函数对象的指针,不会与某个函数绑定,一个函数可能会有多个名字。

        函数getSum (a, b) {   返回一个+ b;   }   警报(getSum (2、3));//5   var=getSum复印件;   警报(副本(2、3));//5   getSum=零;   警报(副本(2、3));//5      之前      

定义函数的方式有三种:,,。

  

函数构造函数接收任意数量的参数,前面的参数枚举了函数的参数,最后一个参数是函数体。一般不推荐使用函数构造函数定义函数。

        var getSum=新功能(“a”、“b”、“返回一个+ b”;      之前      

JavaScript没有函数重载的概念,若声明了两个同名函数,则后面的函数会覆盖前面的函数。

  

由于函数名本身是变量,因此函数也可以作为值来使用,不仅可以传递一个函数作为参数,还可以将函数作为返回值。

        函数callFunction(函数,参数){   返回函数(参数);   }   函数sayHello () {   返回“你好,”+名称;   }   var=结果callFunction (sayHello,“爱丽丝”);   警报(结果);//你好,爱丽丝      之前      

  

  例:

        函数func1(){//声明,程序的一部分   函数func(){//声明,函数体的一部分   …//函数体   }   }      之前      

  

  例1:

        var有趣=函数func(){},//表达式,赋值表达式的一部分      之前      例2:

        新函数func(){},//表达式,新表达式      之前      例3:

        (函数func () {});//表达式,包含在分组操作符——括号()内,括号()内只能包含表达式      之前      例4:

        (函数func(){});//表达式,数组初始化器内只能是表达式      之前      例5:

        1,函数func(){},//表达式,逗号只能操作表达式      之前      

  

函数构造器创建的函数的[[范围]]属性仅包含全局对象。

        & lt; script>   var=1;   func1 ();   函数func1 () {   var=2;   var b=3;   var func2=新功能(“警报(一个);警报(b);“);   func2 ();//1, b是没有定义的   }   & lt;/script>      之前      

函数构造器创建的函数func2可以从全局对象中取得变量,但全局对象中没有b,因此报错:b未定义。

  

  

1)函数声明在进入上下文阶段创建,在代码执行阶段就已经可用了,函数表达式则是在代码执行阶段才创建,所以函数声明可以提升,但函数表达式则不能。

  

函数声明提升:

        func();//函数声明   函数func () {   警报(“函数声明”);   }      之前      

函数表达式不能提升:

        func();//报错:函数不是一个函数   var func=function () {   alert("函数表达式”);   }      之前      

2)函数声明影响变量对象签证官,也就是存储在上下文的签证官中的变量对象,函数表达式不影响变量对象签证官,不存在于变量对象中,这意味着既不可能通过名称在函数声明之前调用它,也不可能在声明之后调用它。但是,函数表达式在递归调用中可以通过名称调用自身。

  例1:

        警报(函数);//报错:函数不是一个函数。定义之前不可用,因为它在代码执行阶段创建   (函数func () {});   警报(函数);//报错:函数不是一个函数。定义之后也不可用,因为它不在变量对象签证官中      之前      例2:

        (函数func(参数){   如果(参数){   返回;   }   func(真正);//函数可,用递归调用可以通过名称调用自身   }) ();   func ();//函数不是一个函数,外部不可用      之前      

JavaScript引用类型函数实例详解