JavaScript 传递引用与传递值
JavaScript 同时采用按值传递和按引用传递机制。基元(例如数字和字符串)按值传递,这意味着在被调用的函数中创建基元的副本。相反,非基元(主要是对象)通过引用传递。
对于对象,传递的是对象的引用而不是副本。这意味着修改被调用函数中的引用变量不会影响调用者中的引用,如提供的示例所示:
var a = { key: 'value' }; replace(a); // a still holds its original value update(a); // a's contents change
与矩形函数的混淆
问题中的示例包含一个带有 my 参数的嵌套函数矩形。该参数最初未定义,但在函数内定义。这样设置的原因是为了提供一种在矩形函数与其内部区域函数之间共享数据的方法。
虽然 my 参数最初并未在矩形函数中定义,但它是通过引用传递的对象引用。因此,当它在矩形函数内分配时,它会创建一个对对象的新引用,该对象可以在矩形函数和区域函数内修改,即使区域函数不直接接收 my 参数。
以上是JavaScript 中的引用传递与值传递:对象和基元在函数调用中的行为如何?的详细内容。更多信息请关注PHP中文网其他相关文章!