TypeScript 中函数的传值和传址

在 TypeScript 中,函数的参数可以按值传递或按引用传递。这一点与 JavaScript 相同。但是,由于 TypeScript 是一种静态类型语言,它对函数传值和传址的处理方式略有不同。在本文中,我们将详细介绍 TypeScript 中函数传值和传址的概念,并提供相应的示例代码。

传值

在 TypeScript 中,函数的参数默认是按值传递的。这意味着,当我们将一个值作为参数传递给函数时,函数会创建一个该值的副本,并在函数内部使用该副本。

例如,下面的代码演示了如何在 TypeScript 中按值传递参数:

在这个例子中,我们定义了一个名为 add 的函数,该函数接受两个参数 xy,并返回它们的和。我们还定义了两个变量 ab,并将它们作为参数传递给 add 函数。在函数内部,xy 分别是 ab 的副本。

传址

除了按值传递参数之外,TypeScript 还支持按引用传递参数。按引用传递参数意味着,当我们将一个对象作为参数传递给函数时,函数会使用该对象的引用,而不是创建该对象的副本。这意味着,在函数内部修改该对象将反映在函数外部。

例如,下面的代码演示了如何在 TypeScript 中按引用传递参数:

在这个例子中,我们定义了一个名为 Person 的类,该类有一个属性 name 和一个构造函数,用于创建一个具有给定名称的新对象。我们还定义了一个名为 changeName 的函数,该函数接受一个 Person 对象和一个新名称,并将该对象的名称更改为新名称。最后,我们创建了一个名为 p 的新 Person 对象,并使用它调用 changeName 函数。由于 changeName 函数按引用传递 p 对象,它将更改 p 对象的名称。

总结

在 TypeScript 中,函数可以按值传递参数或按引用传递参数。按值传递参数意味着函数将创建参数的副本,并在函数内部使用该副本。按引用传递参数意味着函数将使用参数的引用,并在函数内部修改该参数。这种差异可以在编写函数时对程序的行为产生重要影响,因此我们应该仔细考虑何时使用哪种传递方式。

参考资料

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/657c2db9d2f5e1655d6f6e74


纠错
反馈