JavaScript函数的参数

本文详细探讨了JavaScript函数参数的定义和使用。介绍了形参与实参的概念,参数匹配原则,以及当实参个数多于或少于形参时的情况。强调了参数的值传递与引用传递的区别,并说明了引用传递时函数内部对参数的影响。同时,提到了arguments对象,它是函数参数的一种类数组对象,允许在函数内部引用所有传递的参数。文中还给出了一个案例,展示了如何在函数中利用arguments对象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.函数的参数

1.定义

  • 形参:函数定义的参数

  • 实参:函数调用时实际传递的参数

  • 参数匹配时从做向右进行匹配。如果实参个数少于形参,后边的参数对应赋值undefined

  • 实参的个数如果多于形参的个数,可以通过arguments访问

  • 函数对象的length属性就是函数形参的个数

  • 参数的个数如果过多,最好将参数封装成对象来接收

  • 函数的参数的值传递和引用传递

    • 引用传递的参数,传递引用对象的地址。函数内部的修改会影响传递参数的引用对象。
    • 值传递的是值类型的一个地址,函数内部不影响函数外部传递参数变量
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>函数参数值传递和引用传递</title>
</head>

<body>
  <script>
    var a = 9, b = { name: 'carolyn', age: 18 };
    function demo(c, d) {
      c = 10;
      d.name = '666';
    }
    demo(a, b);
    console.log(a); // 9
    console.log(b); // {name: '666', age: 18}
  </script>
</body>

</html>

2.函数arguments的使用

arguments 是一个对应于传递给函数的参数的类数组对象
arguments对象是所有(非箭头)函数中都可用的局部变量。你可以使用arguments对象在函数中引用函数的参数。此对象包含传递给函数的每个参数,第一个参数在索引0处。

你可以通过以下方式使用它

arguments[0]
arguments[1]
arguments[2]

arguments对象不是一个 Array 。它类似于Array,但除了length属性和索引元素之外没有任何Array属性。但是它可以被转换成数组

var args = Array.prototype.slice.call(arguments);
var args = [].slice.call(arguments);

// ES2015
const args = Array.from(arguments);
const args = [...arguments];
案例:使用arguments实现Mathmax函数
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>02-函数arguments实现max函数</title>
</head>

<body>
  <script>
    function myMax() {
      if (arguments.length === 0) return NaN;
      let max = arguments[0];
      for (let index = 0; index < arguments.length; index++) {
        if (arguments[index] > max) {
          max = arguments[index]
        }
      }
      return max
    }
    console.log(myMax()); // NaN
    console.log(myMax(1, 2, 5, 14, 13)); // 14
  </script>
</body>

</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值