关于函数的参数

函数,也叫方法,但是我更喜欢叫它方法.
在JavaScript中,函数的参数有两个,一个是紧跟在函数名的小括号中的"形参"(用于接收值),另一个这是调用该函数方法的时候函数名后紧跟的"实参"(用于把值传给形参).

在大部分编程语言中 ,函数的参数都分为两种:

  1. 声明函数时的参数是形参(接收值)
  2. 调用函数时的参数是实参(把值传给形参)
    ==但是 ,对于JavaScript这门弱类型语言,对函数的参数的处理方面和其他强类型语言相比有很大不同,并且灵活了许多:==
  1. 形参,在函数内部可以作为一个普通的局部变量使用。而且通常情况下,实参已经把值赋值给了形参。例如下面例子中的num1和num2在方法内部就可以作为一个普通的局部变量使用。
  2. 在调用函数的时候,实参的个数可以形参的个数一致,也可以不一致。形参可以比实参的个数多,也可以比实参的个数少。
  3. 形参和实参匹配的时候总是按照顺序匹配。
  4. 函数对传入的实参,既不做类型的检查,也不做个数的检查。如果需要这些检查,需要开发者自行实现代码完成
  5. 形参不需要用var声明,如果用了var声明反而会报错.
示例代码



1、在通过实参给形参传递参数的时候,如果实参的个数比形参少,则接收不到值的形参的初始化值为 undefined 的。
2、传递的实参比形参多的时候,多余的实参没有形参接受,正常情况下无法访问到传递过来的多余的实参。
3、其实多余的实参并没有丢失,函数帮我们保存在了一个变量(对象)中。这个变量的名字就是 arguments。
4、arguments不需要开发者手动创建,在调用函数的时候,会自动创建,并把传递过来的所有实参的值都保存在这个变量中。
5、可以暂时把arguments当成一个数组来理解,虽然他实际并不是一个数组。(其实是个对象,每个参数都是他的一个属性值)。
argumrnts示例
  alert(num1 === arguments[0]);  //true 
  alert(num2 === arguments[1]); // true
  /*
    只要方法被调用,则一定会自动创建一个arguments对象,这个对象会存储传过来的所有的实参。
  */
  for (var i = 0; i < arguments.length; i++) {
    alert(arguments[i]);
  }
}
doSomething("a", "b", "c", "d");```

你可能感兴趣的:(关于函数的参数)