• 主页

  • 投资

  • IT

    🔥
  • 设计

  • 销售

  • 共299篇

    前端 - Javascript

关闭

返回栏目

关闭

返回前端 - Javascript栏目

41 - 函数 - 函数参数 - 形参与实参的传递规则

作者:

贺及楼

成为作者

更新日期:2025-02-21 17:17:26

函数 - 函数参数 - 形参与实参的传递规则

在 JavaScript 的世界里,函数就像是一个个小魔法师,它们能接收信息、处理信息,然后给出结果。而函数参数就像是魔法师手中的魔法道具,形参和实参则有着独特的传递规则,下面就让我们一起来揭开它们的神秘面纱。

形参和实参的基本概念

形参,简单来说就是函数定义时声明的参数,它就像是一个占位符,告诉函数在被调用时会接收什么样的信息。而实参则是在调用函数时实际传递给函数的值。

让我们通过一个简单的例子来看看它们的区别:

  1. // 定义一个函数,这里的 num1 和 num2 就是形参
  2. function add(num1, num2) {
  3. return num1 + num2;
  4. }
  5. // 调用函数,这里的 3 和 5 就是实参
  6. let result = add(3, 5);
  7. console.log(result); // 输出 8

在这个例子中,add 函数定义时的 num1num2 是形参,当我们调用 add(3, 5) 时,35 作为实参传递给了函数。

传递规则

按值传递

在 JavaScript 中,基本数据类型(如 numberstringboolean 等)是按值传递的。这意味着当我们把一个基本数据类型的实参传递给函数时,函数内部接收到的是实参的一个副本,而不是实参本身。

  1. function changeValue(num) {
  2. num = num + 10;
  3. return num;
  4. }
  5. let original = 5;
  6. let newNum = changeValue(original);
  7. console.log(original); // 输出 5,原始值没有改变
  8. console.log(newNum); // 输出 15

在这个例子中,original 的值并没有因为函数内部对 num 的修改而改变,因为 num 只是 original 的一个副本。

引用传递(对象和数组)

对于对象和数组,JavaScript 是按引用传递的。这意味着当我们把一个对象或数组作为实参传递给函数时,函数内部接收到的是该对象或数组的引用,而不是副本。

  1. function changeObject(obj) {
  2. obj.name = 'New Name';
  3. }
  4. let myObject = { name: 'Old Name' };
  5. changeObject(myObject);
  6. console.log(myObject.name); // 输出 'New Name'

在这个例子中,函数内部对 obj 的修改实际上影响了 myObject,因为它们指向同一个对象。

总结表格

数据类型 传递方式 说明
基本数据类型(如 number、string、boolean) 按值传递 函数内部接收到的是实参的副本,修改不会影响原始值
对象和数组 按引用传递 函数内部接收到的是实参的引用,修改会影响原始对象或数组

通过对形参和实参传递规则的了解,我们可以更好地控制函数的行为,避免一些不必要的错误。在实际开发中,要时刻记住基本数据类型和引用类型的传递差异,这样才能让我们的 JavaScript 代码更加健壮和可靠。就像魔法师熟练掌握魔法道具的使用方法一样,我们也能熟练运用函数参数的传递规则,创造出更加精彩的代码魔法。