JavaScript 函数参数与实参:传递原始类型和非原始类型变量的区别是什么?
函数参数和实参的关系
当我们传递变量值给函数时,会遇到关于函数参数和实参之间关系的问题。在 javascript 中,函数实参与形参的关系取决于所传递变量的类型。
传递原始类型变量
在传递原始类型变量(如字符串、数字、布尔值)时,形参得到的是实参值的副本。这意味着对形参的任何修改都不会影响实参。例如:
function changenum(num) { num = 10; console.log("num:", num); // 输出: 10 } const x = 5; changenum(x); console.log("x:", x); // 输出: 5
传递非原始类型变量
当传递非原始类型变量(如数组、对象)时,形参得到的不是值的副本,而是对原对象的引用。这意味着对形参的任何修改都会影响实参。例如:
function changeArray(array) { array[0] = 10; console.log("array:", array); // 输出: [10, 2, 3] } const a = [1, 2, 3]; changeArray(a); console.log("a:", a); // 输出: [10, 2, 3]
在上面的示例中,当我们调用 changearray 函数时,变量 a 的值被传递给 array 参数。array 参数得到的不是 a 值的副本,而是对 a 数组的引用。因此,对 array 的修改也影响了 a 数组。
因此,了解函数参数和实参之间的关系对于正确地处理变量至关重要。在传递原始类型变量时,不需要担心对实参的影响,但是在传递非原始类型变量时,应该意识到对形参的修改也会修改实参。
以上就是JavaScript 函数参数与实参:传递原始类型和非原始类型变量的区别是什么?的详细内容,更多请关注其它相关文章!