function myfun(a,b){
alert(arguments.length); //弹出调用时实际传入的参数个数
alert(arguments[0]); //对应参数a
return a+b;
}
alert(myfun.length); //形参个数,2
arguments对象还有其他属性,比如常用的arguments.callee ,指向该函数自身。
要注意:如果函数内部声明了与形参同名的子函数(同域内,变量未赋值时同名函数生效),arguments 的相应值也会被修
改,但是,在作用域内使用 var 声明了同名的 变量则不会导致 arguments 的参数值被函数替换(但firefox 依然替换)。
复制代码 代码如下:
function aa(a , b,c){ //js 群的一道题
function a(){}
console.log(a); //function a
console.log(aa);
//如果作用域内没有 var a ,则 arguments[0] 为 function a (friefox(version 17) 则一定是function a)
console.log(arguments[0]);
var a = "ee"; //注销此句,考擦 arguments[0] 将变为 a 函数
var aa = "444";
arguments = 6;
console.log(a);
console.log(aa);
console.log(arguments);
}
aa(1,2,3);
三、函数的返回值三、函数的返回值
js函数使用 return 语句返回值。
一切数据类型都可以作为函数的返回值(包括函数),js函数也可以没有返回值。
四、函数调用四、函数调用
函数自己是不会运行的,当它运行时,总是存在一个调用它的对象。
默认情况下,在任何语法环境中,如果没有显式指定函数的调用对象,就是指通过window对象来调用该函数,此时,函数体
内的this指针指向window对象。
复制代码 代码如下:
function myfun(a,b){
alert(this);
return a+b;
}
myfun(1,2); // 调用函数并传入2个参数,这2个参数分别对应形式参数a,b调用函数时,如果传入的参数个数超过形式参数,就
只有用arguments加下标来接收了。
由于没有显式指定调用函数的对象,alert(this)将弹出 window对象。这种调用方法是最常见的。
用于显式指定函数的调用对象方法有三个:用于显式指定函数的调用对象方法有三个:
1、如果一个函数被赋为一个对象的属性值,这个函数只能通过该对象来访问(但并非是说该函数只能被该对象调用),通过
该对象调用这个函数的方式类似以面向对象编程语言中的方法调用(实际上在js中也习惯使用方法这种称呼)。