JavaScript 函数参数

JavaScript 函数不会对参数值进行任何检查。


函数参数

在本教程中稍早的时间,您已经学到了函数可以拥有参数

  1. functionName(parameter1, parameter2, parameter3) {
  2. 要执行的代码
  3. }

函数参数(parameter)指的是在函数定义中列出的名称

函数参数(argument)指的是传递到函数或由函数接收到的真实


参数规则

  • JavaScript 函数定义不会为参数(parameter)规定数据类型。
  • JavaScript 函数不会对所传递的参数(argument)实行类型检查。
  • JavaScript 函数不会检查所接收参数(argument)的数量。

参数默认

如果调用参数时省略了参数(少于被声明的数量),则丢失的值被设置为:undefined

有时这是可以接受的,但是有时最好给参数指定默认值:

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <h1>将默认值设置为函数参数</h1>
  5. <p id="demo">
  6. <script>
  7. function myFunction(x, y) {
  8. if (y === undefined) {
  9. y = 0;
  10. }
  11. return x * y;
  12. }
  13. document.getElementById("demo").innerHTML = myFunction(4);
  14. </script>
  15. </body>
  16. </html>

如果调用函数时参数过多(多于声明的参数),则可以使用arguments对象访问这些参数。


arguments 对象

JavaScript 函数有一个名为 arguments 对象的内置对象。

arguments 对象包含函数调用时使用的参数数组。

这样,您就可以简单地使用函数来查找数字列表中的最高值:

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <h1>找到最大的数字</h1>
  5. <p id="demo">
  6. <script>
  7. function findMax() {
  8. var i;
  9. var max = -Infinity;
  10. for(i = 0; i < arguments.length; i++) {
  11. if (arguments[i] > max) {
  12. max = arguments[i];
  13. }
  14. }
  15. return max;
  16. }
  17. document.getElementById("demo").innerHTML = findMax(4, 5, 6);
  18. </script>
  19. </body>
  20. </html>

或创建一个函数来总和所有输入值:

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <h1>所有参数的总和:</h1>
  5. <p id="demo">
  6. <script>
  7. function sumAll() {
  8. var i;
  9. var sum = 0;
  10. for(i = 0; i < arguments.length; i++) {
  11. sum += arguments[i];
  12. }
  13. return sum;
  14. }
  15. document.getElementById("demo").innerHTML = sumAll(1, 123, 500, 115, 44, 88);
  16. </script>
  17. </body>
  18. </html>

参数通过值传递

函数调用中的参数(parameter)是函数的参数(argument)。

JavaScript 参数通过传递:函数只知道值,而不是参数的位置。

如果函数改变了参数的值,它不会改变参数的原始值。

参数的改变在函数之外是不可见的。


对象是由引用传递的

在 JavaScript 中,对象引用是值。

正因如此,对象的行为就像它们通过引用来传递:

如果函数改变了对象属性,它也改变了原始值。

对象属性的改变在函数之外是可见的。


分类导航