2016-11-10 6 views
0

Ich weiß, dass es albern klingt, aber ich frage nur, gibt es eine Möglichkeit, den Wert von b variabel zu halten, nachdem wir a Variable löschen?Wie man den Wert der Variable behält, nachdem man ihn null gemacht hat

var a = 'some string or number'; 
var b = a; 

delete a; 

but b is still = 'some string or number'; 

oder eine andere Möglichkeit, den Wert b beizubehalten?

+1

Sie spielen nicht mit den Referenzen herum. Werte werden immer kopiert. –

+0

vielleicht noch ein paar Beispiele. sollte "b" auch gelöscht werden? –

+0

jede Alternative? – Mohsin

Antwort

0

delete nicht löschen Werte oder Variablen, aber löscht Eigenschaften auf ein Objekt (MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/delete).

Zum Beispiel:

var myObj = { a: 1, b: 2 }; 
delete myObj.a; 
// myObj === { b: 2 } 

Natürlich können Sie nur einen Verweis auf den Wert in einer anderen Variablen halten: var copy = myObj.a (bevor Sie die Eigenschaft löschen). Die Variable enthält dann den Wert (für Primitive wie Basiszahlen, Strings, Booleans) oder Referenz (für Objekte usw.). So oder so, Ihre Kopie den Wert noch nach der ursprünglichen Eigenschaft halten wurde gestrichen:

var obj = { a: "hello" }; 
var copy = obj.a; 
delete obj.a; 
console.log(copy); // "hello" 
0

Löschen nur die Eigenschaft eines Objekts löscht keine Variable,

var person = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"}; 
delete person.age; 

So wird die Variable " b "in dem Code, den Sie erwähnt haben, behalten Sie den Wert von" a ".

0

Wenn Sie ein zu lösch in Ihnen Fall müssen Sie eine von definieren:

window.a = 'some string or number';

Dann löschen Sie ihn durch:

delete window.a;

oder nur

delete a;

delete in Javascript löscht nur die Eigenschaft, löscht nicht den Wert, auf den die Eigenschaft verweist. Der Wert ist möglicherweise nicht mehr vorhanden, da kein Referenzpunkt mehr vorhanden ist.

Und in Ihrem Fall ist der Wert von a eine Zeichenfolge, so, nach a-b zuweisen, b seinen eigenen Wert von a „kopiert“ hat. Wenn Sie a erfolgreich löschen, ist auch der Wert von a verloren, aber der Wert von b ist noch intakt.

+0

Wahrscheinlich sollte 'Fenster nicht verwenden.Um dies zu demonstrieren, gibt es mehrere Browser (Browserversionen lesen), die Eigenschaften im Fenster nicht entfernen (http://perfectionkills.com/understanding-delete/#delete_and_host_objects): "_Variable und Funktionsdeklarationen in Global und Funktionscode erstellt immer Eigenschaften mit DontDelete_ " –

Verwandte Themen