js函数的参数
js函数的参数:
js是弱类型的编程语言,调用函数时既不在乎函数的参数,也不在意参数的类型
即便你定义的函数值接受两个参数,在调用这个函数时也未必一定要是两个参数。
可以传递一个、三个甚至不传递参数,而解析器永远不会有什么怨言.
之所以会这样,原因是ecmascript中的参数在内部是用一个数组来运行的。函数接受到的永远是这个数组,而不关心数组中包含哪些参数(如果有参数的话)如果这个数组中不包含任何元素,无所谓;如果包含多个元素,也没问题.
所有参数都可以通过arguments对象来获取
function Animal(name){
this.name = 'animal';
this.showName = function(){
console.log(this.name);
console.log(name);
}
console.log(arguments);
}
获取方法的参数个数
function test(a,b){ var actual = arguments.length; var expected = test.length; console.log(actual); // 5 实际传入5个 console.log(expected); // 2 期望 2个
console.log(arguments[1]); // 输出 43
} test(23,43,63,23,23);
arguments的callee属性
表示对函数对象本身的引用,也就是所指定的 Function 对象的正文,这有利于实现匿名函数的递归或者保证函数的封装性。
示例(递归调用):
var sum=function(n){ if(1==n) { return 1; } else {
console.log(n); return n + arguments.callee(n-1); } } alert(sum(100));