覆盖object参数不会将新引用传递给外部作用域的原因是因为在函数调用时,参数传递是按值传递的。当我们将一个对象作为参数传递给函数时,实际上是将对象的引用(内存地址)作为值传递给了函数。
在函数内部,如果我们对传入的对象进行修改,实际上是通过引用来修改对象的属性或者方法。这样的修改会影响到原始对象,因为它们引用的是同一个对象。
然而,如果我们在函数内部重新给传入的对象参数赋予一个新的对象,这个新对象的引用将会覆盖原始对象的引用。但是这个覆盖只是在函数内部有效,不会影响到外部作用域中的原始对象。
这是因为在函数内部,我们改变了参数的引用,使其指向了一个新的对象,但是外部作用域中的引用仍然指向原始对象。所以,外部作用域中的引用不会受到函数内部的修改的影响。
这种行为是为了保护外部作用域中的对象不受函数内部的修改影响,同时也是为了避免不必要的内存消耗和性能损失。
总结起来,覆盖object参数不会将新引用传递给外部作用域是因为函数参数传递是按值传递的,当我们在函数内部重新给参数赋予一个新的对象时,只是改变了参数的引用,不会影响外部作用域中的原始对象。
领取专属 10元无门槛券
手把手带您无忧上云