Ich habe Zweifel über die folgenden Codes. Ich dachte, dass Datentypen-Grundelemente, die einer Variablen in JS zugewiesen sind, als Wert übergeben wurden, während Objekte als Referenz übergeben wurden. Wenn Funktionen Objekte in JS sind, dachte ich, sollten sie als Referenz übergeben werden, aber die beiden folgenden Codes verhalten, als Wert übergeben:JavaScript Funktionsausdruck einer Variablen zugewiesen (Referenz oder Wert?)
CODE 1
var x = function hello(){ console.log("hello")};
console.log(x);
var y = x;
console.log(y);
x = function bye(){console.log("bye")};
console.log(x);
console.log(y);
OUTPUT
[Function: hello]
[Function: hello]
[Function: bye]
[Function: hello]
CODE 2
In diesem Fall zugewiesen ich eine Methode auf eine globale Variable und das Verhalten ist das gleiche:
var x = {name:"Max",
action: function one(){console.log("one")}
}
var y = x.action;
console.log(y);
x.action = function two(){console.log("two")};
console.log(x.action);
console.log(y);
OUTPUT
[Function: one]
[Function: two]
[Function: one]
Ich schätze wirklich jede Einsicht und Erklärung zu diesem Thema.
Sie Variablen neu zuweisen. Sie nicht durch Referenz ändern. –
JS wird nicht als Referenz übergeben. Übergeben Sie immer nach Wert, aber dieser Wert kann eine Referenz sein. – Oriol
Vielen Dank für Ihre Antwort Niet. Wie könnte ich in Code 1 die Funktion "Hallo" ändern, die der Variablen x als Referenz zugewiesen wurde, anstatt sie neu zuzuweisen? –