Werden Parameter in JavaScript als Wert oder als Referenz übergeben?
P粉394812277
2023-08-21 15:57:16
<p>Primitive Typen (Zahlen, Zeichenfolgen usw.) werden als Wert übergeben, Objekte sind jedoch unbekannt, da sie beide als Wert übergeben werden können (in diesem Fall gehen wir davon aus, dass die Variable, die das Objekt enthält, tatsächlich die Objektreferenz ist). kann auch als Referenz übergeben werden (in diesem Fall gehen wir davon aus, dass die Variable das Objekt selbst enthält). </p>
<p>Obwohl es letztendlich keine Rolle spielt, würde ich gerne wissen, wie die Parameterübergabekonvention korrekt wiedergegeben wird. Gibt es einen Auszug aus der JavaScript-Spezifikation, der die Semantik dazu definiert? </p>
在JavaScript中很有趣。考虑以下示例:
这将产生以下输出:
obj1
根本不是引用,那么改变obj1.item
对函数外部的obj1
没有影响。num
将为100
,obj2.item
将为"changed"
。相反,num
保持为10
,obj2.item
仍然为"unchanged
"。实际上,情况是传递的项是按值传递的。但是按值传递的项本身是一个引用。 从技术上讲,这被称为共享调用。
在实际应用中,这意味着如果更改参数本身(如
num
和obj2
),那不会影响传入参数的项。但是,如果更改参数的内部,那将会传播回来(如obj1
)。