<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>函数--参数</title> </head> <body> <script> /* javascript函数--参数 */ /* 1.形参、实参 2.arguments 3.arguments对象运用 */ // 1.形参、实参 // 略 // 2.arguments /* arguments 是一个对应于传递给函数的参数的类数组对象。 arguments只有函数内部使用, 可以通过索引访问参数,如果不存在则会返回undefined 由实参决定,不会因形参个数变化。 */ function func1(a, b) { //索引获取 console.log(arguments[0]);// expected output: 1 console.log(arguments[1]);// expected output: 2 console.log(arguments[2]);// expected output: 3 //数量 console.log(arguments.length)// expected output: 3 } func1(1, 2, 3); // 2.1arguments.callee属性 /* argument.callee表示当前正在执行的函数,在比较时是严格相等的。 */ function foo(){ //console.log(arguments.callee);//true console.log(arguments.callee==foo);//flase console.log(arguments.callee===foo);//true } foo(); /* 通过arguments.callee属性获取到函数对象后,可以直接传递参数重新进行函数的调用, 这个属性常用于匿名函数的递归调用。 */ function create(){ return function(n){ if(n <= 1) return 1; return n * arguments.callee( n - 1 ); }; } var result=create()(5); console.log(result);//120 // 3.arguments对象运用 //3.1实参个数判断 /* 判断参数个数是否满足,或者类型 */ function f(x,y,z){ //检查参数个数 if(arguments.length !==3){ throw new Error('参数个数少应为三个!实际个数为'+arguments.length)//Uncaught Error: 参数个数少应为三个!实际个数为2 } } // f(1,2) //3.2任意个数的参数处理 // 略 //3.3模拟函数重载 // 略 </script> </body> </html>