JavaScript中的函数(一)

  javaScript中的函数实际上是对象,每一个函数都是Function类型的实例,和其他引用类型一样具有属性和方法。由于函数是对象,因此函数名实际上也就是一个指向函数对象的指针,也就是函数对象的一个引用,因此一个函数可以有多个名字。

 1.函数定义的方式:

  1)使用函数声明定义函数:

     function sum(num1,num2){

    return num1+num2;

  }

  2)使用函数表达式定义函数:定义变量sum并将其初始化为一个函数,变量sum可以引用函数。要注意函数末尾有一个分号,和声明变量一样。

    var sum = function(num1,num2){

    return num1+num2;

  };

 3)使用Function构造函数定义函数(一般不推荐,虽然很好理解Function对象类型)

     Function构造函数可以接收任意数量的参数,但是最后一个参数被视为函数体,其前面的参数视为新函数的参数。

     var sum = new Function("num1","num2","return num1+num2");

     因为这种方法定义函数时会导致解析两次代码(第一次解析是script代码,第二次是解析传入构造函数中的字符串)从而影响性能。

2.script中不存在函数重载

 若存在多个函数的名称相同,则后面的函数会覆盖前面定义的函数。

 例如:

    function increNum(num){

     return num+10;

    }

    function increNum(num){

    return num+20;
    }

    var result = increNum(10);

    alert(result);//30

    以上代码与下面代码一样:

   var increNum = function(num){return num+10};

   increNum = function(num){return num+20};

   alert(increNum(10));//30

 3.函数声明和函数表达式的区别:

  解析器在向执行环境中加载数据时,对函数声明和函数表达式解析顺序和时机不同。解析器会先读取函数声明,使其在执行任何代码之前可以访问,而表达式必须等到解析器执行到它所在的代码行,才能真正的被执行。

   alert(sum(10,20));

   function sum(num1,num2){

    return num1+num2;

  }

  上面代码可以正常运行,因为在执行代码之前,解析器就先读取到了函数声明,将其添加到执行环境中,使得函数可以被访问。如果把函数声明改成函数表达式,就会出错。

  alert(sum(10,20));

  var sum = function(num1,num2){return num1+num2};

  除了这一点区别外,一般函数声明和函数表达式还是等价的。

 

posted @ 2016-08-11 21:36  zwbg  阅读(800)  评论(0编辑  收藏  举报