函数对象:
JavaScript中的函数就是对象。对象是“名/值”对的集合并拥有一个连接到原型对象的隐藏连接。对象字面量产生的对象连接到objec.prototype,函数对象连接到Function.prototype.
函数可以保存在变量、对象、数组中;可以传参给其他函数;可以返回函数;可以拥有方法;
函数字面量:
var a=function(a,b){
}
函数名可省略(匿名函数)。
括号中的变量没有被初始化为undefined,而是在函数被调用时初始化为提供的参数的值。
函数可被定义在其他函数中;内部函数可以自由访问父函数的参数和变量
通过函数字面量创建的函数对象包含一个连到外部上下文的连接。(闭包)
调用:
调用一个函数会暂停当前函数的执行,传递控制权和参数给新函数。除了声明时定义的形参,还会接收this和arguements.
this的值决定JavaScript的调用模式:
- 方法调用
- 函数调用
- 构造器调用
- apply调用
这些模式在如何初始化this上存在差异。
实参多了——超出的值会被忽略;
实参少了——缺少的被定义为undefined.
对参数值不会进行类型检查:任何类型的值都可以被传递给任何参数。