javascript (三)

函数

函数的调用

  • 作为函数
  • 作为方法
  • 作为构造函数
  • 通过他们的 call()apply() 方法间接调用

实参对象

arguments 并不是真正的数组,它是一个实参对象。每个实参对象都包含以数字为索引的一组元素以及 length 属性。

自定义函数属性

javascript 中的函数并不是原始值,而是一种特殊的对象,也就是说函数可以拥有属性。


/*
 *  初始化函数对象的计算器属性。
 *  由于函数声明提前了,这里是可以在函数声明之前给它的成员赋值的。
 */
number.count = 0;

/*
 *  每次调用这个函数都会返回不同的整数。
 *  它使用一个属性来记住下次将要返回的值。
 *  先返回计数器的值,然后计数器加1。
 */
function number(){
    return number.count++
}

作为命名空间的函数

为众人说熟知的立即执行函数:

(function(){
    // 局部变量,防止污染全局变量
}()

函数声明语句和函数定义表达式的区别?

/*
 * 函数声明语句
 */
 function fn(){
    // some code
 };

/*
 * 函数定义表达式
 */
 var a = function(){
    // some code
 };

两种方式都创建了新的函数对象, 但函数声明语句的函数名是一个变量名, 变量指向函数对象, 和通过var声明变量一样,函数定义语句中的函数被显示 地提前到了脚本或函数的顶部, 因此它们在整个脚本和函数内都是可见的,但是使用var 表达式定义函数, 只有变量声明提前了,变量初始化代码仍然在 原来的位置, 用函数语句创建的函数, 函数名称和函数体均被提前,所以我们可以在声明它之前就使用它。