js函数(2)

8.3函数的形参和实参

js中的函数并未指定函数形参的类型,函数调用也未对传入的实参值做任何类型的检查。

8.3.1函数的形参和实参

当调用函数时传入的实参比函数声明时指定的形参个数要少,剩下的参数都将设置为undefined; {     a=a|| []   考虑  ||  运算符  即当第一个参数为真的话就返回第一个,否则返回第二个参数     }

8.3.2可变长的实参列表:实参对象:

适用于  传入的参数个数超过了函数定义时的形参个数时,没有办法直接获得未命名值的引用,参数对象解决了这个问题。

在函数体内,标识符arguments是指向实参对象的引用。实参对象是一个类数组的对象,所以可以通过下标访问传入函数的实参值  arguments[0].

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

实参对象定义了callee和caller属性。在严格模式下,对这两种属性进行读写都会产生错误。而在非严格模式下规定:

callee属性指代当前正在执行的函数,caller指代调用当前正在执行的函数的函数var fa=function (x) {    if (x<=1){return 1;    return x*arguments.callee(i-1);


};
8.3.3将对象属性用作实参
为了便于记住调用函数中实参的正确顺序,所以通过名/值对的形式传入参数。
copy({from:a,to:b,length:4});

8.4作为值的函数
1将函数名赋值给变量,则变量名就相当于函数名
2将函数赋值给对象的属性,当函数作为对象的属性调用时,函数就称为方法;
var o={ squer:function(x){x*x}};
var y=o.squer(16);
3当吧它们赋值给数组元素时,函数甚至不需要带名字
var
a=[function(x){x*x;},20];
a【0】(a【1】);












猜你喜欢

转载自www.cnblogs.com/Damocless/p/11779272.html