8.1函数定义

function关键字,可使用两种方式。
函数可以嵌套,闭包。记住函数作用域规则。
函数声明语句不恩能够出现在循环、条件判断、或者try/catch/finally以及with语句中。
 
8.2函数调用
有4种方式调用JavaScript函数:
作为函数
作为方法
作为构造函数
通过它们的call()和apply()方法间接调用
 
8.3函数的实参和形参
1可选形参
2可变长的实参列表:实参对象
省略的实参都将是undefined,多出的参数会自动忽略。
callee和caller属性
3.将对象属性用作实参
4实参类型
最好进行检测,防御编程
 
8.4作为值的函数
自定义函数属性
当函数需要一个“静态”变量来调用时保持某个值不变,最方便的方法就是给函数定义属性。
uniqueInteger.counter = 0;
function uniqueInteger(){
return uniqueInteger.counter++;
}
 
8.5作为命名空间的函数
 
8.6闭包
函数对象可以通过作用域链相互关联起来,函数体内的变量都可以保存再函数作用域内,这种特性再计算机科学文献中称为闭包
var uniqueInteger = (function(){
var counter = 0;
return function() { return counter++; };
}());
 
8.7函数属性、方法和构造函数
1。arguments.length(实参数量)arguments.callee.length(形参数量)
2.prototype属性
3call()方法和apply()方法
4bind()方法
5toString()方法
6Function()构造函数
7可调用对象(伪函数)
 
8.8函数式编程
1使用函数处理数组
2高阶函数
3不完全函数
4记忆(缓存计算结果)