日期:2014-05-16  浏览次数:20367 次

JavaScript中函数参数的理解

ECMAScript(javascript 包含ECMAScript 、DOM、BOM)函数的参数与大多数语言中的参数有所不同。ECMAScript函数不介意传入多少个参数,也不介意传进来参数的类型。也就是说,即便你定义的函数只接收两个参数,在调用这个函数的时候,你可以传入一个、三个甚至不传入参数,而解析器永远不会有什么怨言。这是因为,在ECMAScript中的参数在内部是用一个数组来表示的。函数接收到的绐终都是这个数组,而不关心数组中包含哪些参数或者有没参数。实际上,在函数体内可以通过arguments对象来访问这个参数数组,从而获取传入给函数的每一个参数。例如一个函数如下:

?

function sayHi(name,message){

   ???? alert("Hello " + name + "," + message);

}

?

上面这个函数的第一个参数的名字叫name,而该参数的值可以通过访问arguments[0]来获取。因此,这个函数可以像下面这样重写,即不显式地使用命名参数:

?

function sayHi(){
??? ??? ??? alert("Hello " + arguments[0] + "," + arguments[1] );
}

?

sayHi("Jack","How are you today?");

?

这个事实说明了,ECMAScript 函数的一人重要特点:命名的参数只是提供方便,但不是必要的。

?

?

通过访问arguments对象的length属性可以获知有多少个参数传入给了函数。


?

?