javascript知识点1---函数
一:理解函数参数
javascript函数参数在函数内部是已数组的形式来表示的,因此不关心是什么类型的参数和有多少个参数,只关心这个数组。这个数组使用arguments对象表示,在函数内部通过方括号形式可以arguments对象来形成参数的访问,例如arguments[0],表示第一个参数,argunments.length得到参数的个数。
所有参数传递的都是值,不可能通过引用传递。
二:没有重载
javascript没有函数重载,因此如果定义了两个函数名相同的函数,后面的就会覆盖前面的那个函数,这点与java不同,在java中,只要函数签名不同,参数的类型和个数不同,即使函数名相同,这些函数也都会被定义,因此就实现了函数的重载。
三:具体说明
函数创建方法:第一,函数声明function,第二,函数表达式。两种的区别:函数声明会有函数声明提前功能,因此可以在函数定义之前进行函数的调用,而表达式不会。
1)作为值的函数,作为另一个函数的参数
function func1(func2,argu2),该函数的参数argu2将作为函数func2的参数。
2)函数作为另一个函数的返回值
function createComparisionFunction(propertyName){
return function(obj1,obj2){
var value1 = obj1[propertyName];
var value2 = obj2[propertyName];
if(value1 < value2){
return -1;
}
else if(value1 == value2){return 0;}
else{return 1;}
}
}
3) 函数内部属性
在函数内部有两个特殊的对象,一个是arguments对象,一个是this对象。
arguments对象用于保存函数的命名参数,有个属性callee,arguments.callee,是个指针,指向拥有arguments对象的函数。
this对象是函数执行环境,全局函数,this值是windows对象。
另一个函数对象属性是caller,caller属性保存中调用当前函数的函数的引用。
4)函数属性和方法
函数属性:length和prototype。length是指函数命名参数的个数,prototype(原型)保存着函数实例方法的真正所在。
函数方法:apple()和call()方法,这两个方法的作用是在特定的作用域中调用函数,也就是修改this的值,扩充函数作用域。这两个方法都有两个参数,第一个参数是要运行函数的作用域,this的值,第二个参数都是要指定函数的参数,但是有所不同,apply方法是需要参数数组,call方法需要参数项,将参数一个个加进去。
函数的另一个方式是bind(对象)方法,该方法作用是创建函数实例,函数的this值会被绑定到bind的参数值上。