函数:
函数也是一个对象,
函数可以封装一些功能,在需要时可以执行这些功能。函数中可以保存一些代码在需要的时候使用。
var fun =new Function()
typeof fun//function
封装到函数中的代码不会立即执行,函数中的代码会在函数调用的时候执行
调用时:函数对象() fun()
调用时函数中代码会按顺序依次执行。
函数对象具有对象的功能,在开发中很少使用构造函数创建函数。
大多使用函数声明来创建一个函数
语法 : function 函数名( 参数...){
语句..
}
使用函数表达式来创建一个函数
var 函数名 =function (参数){
语句...
};
调用函数时不会检查实参的类型,所以要注意,是否有可能接收到非法的参数。如果有可能要进行类型的检查
调用函数时,解析器也不会检查实参的数目,多余实参不会被赋值。
如果实参数目少于形参数目,没有对应实参的形参为undefined
返回值
return 之后的语句不会执行
参数:当参数过多时,可以放在一个对象中进行传递。
实参也可以是一个函数。
function square(r) {
return 3.14*r*r;
}
console.log(square(5));
function ii(a) {
console.log(a);
}
ii(square)
将一个匿名函数传入一个函数的形参,很常用
ii(square());加括号相当于将square函数 的返回值传给ii函数。
不加括号表示传入的是一个函数对象。
使用return可以结束整个整数。
返回值可以是任意的数据类型,也可以是一个对象。
立即执行函数
(function(){})()
往往只会执行一次。函数有形参的话最后一个小括号还可以传递参数。
函数的方法 :
call()和apply()
函数对象的方法,通过函数对象来调用。
可以将一个对象指定为第一个参数,此时这个对象成为函数执行时的this
call方法可以将实参在对象之后依次传递,
apply将实参封装到一个数组中在进行传递。
arguments 参数列表
调用函数,传入this,和arguments
即使不定义形参,也可以通过arguments使用实参
arguments.length实参的长度。
arguments.callee对应一个函数对象,就是当前正在执行的函数对象