JavaScript 中函数参数的传递方式有两种:值传递和引用传递。在使用时需要注意它们的区别,尤其是在处理对象和数组时。
值传递
值传递指的是将变量的值作为参数传递给函数。当函数内部改变这个参数的值时,并不会影响到函数外部的变量。
示例代码:
-- -------------------- ---- ------- -------- ------ -- - - - - - -- - - - - -- ------------------- --------- - --- -- -- --- --- - --- - - -- --- - - -- ------ --- -------------------- --------- - --- -- -- --- ---
输出:
inside function: a = 2 b = 3 outside function: x = 1 y = 2
可以看到,函数内部对 a
和 b
的修改并没有影响到 x
和 y
的值。
引用传递
引用传递指的是将变量的地址作为参数传递给函数。当函数内部改变这个参数所指向的对象的属性时,会影响到函数外部的变量。
示例代码:
-- -------------------- ---- ------- -------- -------------- - -------- - ---- ------ ------- - --- ------------------- --------- --- --- ----- - --- ------ - - ----- ---- ------ ---- -- -- ------------------ -------------------- --------- ------ --- --------
输出:
inside function: obj = { name: 'new name', age: 18 } outside function: person = { name: 'new name', age: 18 }
可以看到,函数内部对 obj
所指向的对象的属性进行了修改,这个修改同样影响到了 person
变量所指向的对象。
注意事项
- 值传递和引用传递仅仅是一种约定,实际上 JavaScript 中并没有真正意义上的引用类型。
- 对于基本数据类型(如数字、字符串等),使用值传递;对于复杂数据类型(如对象、数组等),使用引用传递。
- 对于引用传递的参数,在函数内部最好不要直接修改它所指向的对象本身,而是应该创建一个新的对象或数组来替代原来的对象或数组。
总结
JavaScript 函数参数的传递方式有值传递和引用传递两种。在使用时需要注意它们的区别,尤其是在处理对象和数组时。为了避免出现不必要的错误,应该尽可能地遵循以上提到的注意事项。
以上是本文的全部内容,希望对你有所帮助!
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/1571