JavaScript系列:ECMAScript函数

  函数是一组可以随时随地运行的语句,它们是ECMAScript的核心。函数由关键字function、函数名加一组参数以及置于括号中要执行的代码声明的。

  函数的基本语法如下:

function functionName (arg0, arg1, ... ,argN) {
     statements      
}

  如果函数无明确的返回值,或调用了没有参数的return语句,那么它真正返回的值是undefined。

  1、无重载

  ECMAScript中的函数不能重载。可以使用相同的名字在同一个作用域中定义两个函数,而不引发错误,但真正使用的是最后一个函数。

  2、arguments对象

  在函数代码中,使用特殊对象arguments,开发者无需明确指出参数名,就能访问它们。arguments[0]表示第一个参数(第一个参数位于位置0,第二个参数位于位置1,依此类推)。因此无需明确命名参数,就可以重写函数。

  使用arguments对象检测传递给函数的参数个数,引用属性arguments.length。

  使用arguments对象判断传递给函数的参数个数,即可模拟函数重载。

function doAdd () {
    if (arguments.length == 1) {
        alert(arguments[0] + 10);
    } else if (arguments.length == 2) {
        alert(arguments[0] + arguments[1]);
    }
}

  3、Function类

  Function类可以表示开发者定义的任何函数。用Function类直接创建函数的语法如下:

var function_name = new Function (argument1, argument2, argument3,  ... , argumentN, function_body);

  尽管可用Function构造函数创建函数,但最好不要使用它,用它定义函数比用传统方式要慢得多。不过,所有函数都应看作是Function类的实例。

  因为函数是引用类型,所有它们也有属性和方法。ECMAScript定义了属性length声明了函数期望的参数个数。

function doAdd(iNum) {
    alert(iNum + 10);
}
alert(doAdd.length); // outputs "1"

  ECMAScript函数可以接受任意多个参数(最多25个),属性length只是为了查看默认情况下预期参数个数提供了一种便捷的方式。

  Function对象也有与所有对象共享的标准valueOf()方法和toString()方法。这两个方法返回的都是函数的源代码,在调试时尤其起作用。

  4、闭包

  闭包是指词法表示包括不必计算的变量的函数。即该函数可以使用函数外定义的变量。

  在ECMAScript中使用全局变量是一个简单的闭包实例。

var message = "Hello World";

function() {
    alert(message);
}
posted @ 2012-09-30 17:53  libingql  阅读(429)  评论(1编辑  收藏  举报