1。函数声明JavaScript中有三种声明函数的方法。(1)函数命令函数命令声明的代码块是一个函数。函数命令后面是函数名,函数名后面是一对圆括号,是传入函数的参数。函数体包含在花括号中。functionprint(s){console.log(s);}(2)函数表达式除了可以用function命令声明函数外,还可以使用变量赋值。varprint=function(s){console.log(s);};使用函数表达式声明函数时,函数命令后面没有函数名。如果加上函数名,函数名只在函数体内有效,在函数体外无效。varprint=functionx(){console.log(typeofx);};x//ReferenceError:xisnotdefinedprint()//function(3)函数构造函数声明函数的第三种方式是Function构造函数。varadd=newFunction('x','y','returnx+y');//等价于functionadd(x,y){returnx+y;}2.函数的重复声明如果相同function如果声明多次,后面的声明会覆盖前面的声明。functionf(){console.log(1);}f()//2functionf(){console.log(2);}f()//23.length属性函数返回期望值ofthefunction的参数个数,即函数定义中的参数个数。functionf(a,b){}f.length//2上面代码定义了一个空函数f,其length属性为定义时的参数个数。调用时无论输入多少个参数,length属性始终等于2。4、toString()函数的toString()方法返回一个字符串,其内容为函数源代码。函数f(){a();b();c();}f.toString()//functionf(){//a();//b();//c();//}5.arguments对象(1)定义由于JavaScript允许函数要拥有无限数量的参数,需要一种机制来读取函数体内的所有参数。这就是arguments对象的用武之地。arguments对象包含函数运行时的所有参数,arguments[0]是第一个参数,arguments[1]是第二个参数,依此类推。该对象只能在函数体内使用。varf=function(one){console.log(arguments[0]);控制台日志(参数[1]);console.log(arguments[2]);}f(1,2,3)//1//2//3在正常模式下,arguments对象可以在运行时修改。(2)与数组的关系要注意,虽然arguments很像数组,但它是一个对象。不能直接在参数对象上使用特定于数组的方法(例如slice和forEach)。如果你想让arguments对象使用数组方法,真正的解决方案是将arguments转换为真正的数组。下面介绍两种常用的转换方式:切片方式和逐个填充一个新数组。varargs=Array.prototype.slice.call(arguments);//或varargs=[];for(vari=0;i
