Heim > Artikel > Backend-Entwicklung > javascript - Können die Daten im Stapel geändert werden? Können beispielsweise numerische Daten geändert werden?
<code>var str = "abc"; str[0]; // "a" str[0] = "d"; str; //仍然是"abc"</code>
Die Zeichenfolge ist unveränderlich und kann daher nicht geändert werden
Können die Daten im Stapel geändert werden?
Zum Beispiel: num=11;
Was geändert wird, ist der Wert 10 im Stapel,
Oder a Neues wird im Stapel erstellt num=11, ursprünglichen Speicher löschen?
<code>var str = "abc"; str[0]; // "a" str[0] = "d"; str; //仍然是"abc"</code>
Die Zeichenfolge ist unveränderlich und kann daher nicht geändert werden
Können die Daten im Stapel geändert werden?
Zum Beispiel: num=11;
Was geändert wird, ist der Wert 10 im Stapel,
Oder a Neues wird im Stapel erstellt num=11, ursprünglichen Speicher löschen?
Mein Verständnis ist
<code>var str = "abc";//创建了一个js中原始值string类型,而原始值是不可变的 str[0] = "d";//这句是典型的引用对象属性的语法,我们可以这样理解,str实际上是不可变的,但是你这样 书写,会造成 strTemp = new String(str);被创建,也就是临时对象创建,并且赋值strTemp[0] = "d"; 之后立即销毁。 也就是你要记住一点,js中原始值是不可变的。 对象是可变的。</code>
<code>这么说吧,我用字符串举例: var str = "Hello";//"Hello"是一个字面量,原始值(Primitive Type),我是这样理解的,有一块内存存储"Hello",str是一个变量名而已,用来引用这块内存,使用它。 var str = "World";//这一句实际上只是改变了引用的位置,因为原始值是不变的,然后假如上面的"Hello",不用的话js的自动垃圾处理回回收的。</code>
Wenn Sie es immer noch nicht verstehen, werde ich mein Bestes geben ------>Das Geheimnis des ursprünglichen Werts von js
Machen Sie gemeinsam Fortschritte.
Skriptzeichenfolgen sind unveränderlich.
Der Zeiger [0] instr[0] = „d“ kann seinen Wert lesen.
Ergänzung:
<code>String 类定义的方法都不能改变字符串的内容。像 String.toUpperCase() 这样的方法,返回的是全新的字符串,而不是修改原始字符串。</code>
Empfehlung:
<code>以上信息来 http://www.w3school.com.cn/jsref/jsref_obj_string.asp 遇到你感觉比较基础的问题,多查文档。 </code>
Komm schon!
sollte ein neu erstelltes sein
Speicherverteilung, einschließlich Heap, Stack und Konstantenpool. Der Platz des Heaps ist größer als der des Stapels. Der Heap enthält normalerweise Objekte, Funktionen und dergleichen. Die deklarierten Variablen werden auf dem Stapel abgelegt, und einige reguläre Zeichen und Zahlen werden im Allgemeinen im Konstantenpool abgelegt. Was ich also hinzufügen möchte, ist, dass einige Dinge an anderen Orten gelagert werden, als Sie gesagt haben.
Der String-Typ in JavaScript ist vom String-Typ in Java entlehnt. Sobald das String-Literal deklariert ist, kann es nicht mehr geändert werden
Im Inneren findet eine Einsiedlertransformation statt
Variable (Wert)→Speicher
In numerischen und booleschen Variablen ist (Wert) ein numerischer Wert
In Zeichenfolgen, Objekten, Arrays usw. ist (Wert) eine Adresse, die auf den Speicher verweist verglichen wird (Wert).
Wenn Sie eine Variable neu zuweisen, ändern Sie den (Wert). Wenn Sie eine Variable einer anderen Variablen zuweisen, übertragen (kopieren) Sie den (Wert) auf eine andere Variable.
Im Bild
n=10; n=11; n bleibt unverändert, was sich ändert (Wert).
b=n; Wert wird übergeben, n bleibt unverändert, b=10.
str= "aa"; str="bb"; str bleibt unverändert, (Wert) zeigt auf eine andere Zeichenfolge.
str2="aa", str2 unterscheidet sich von str, es zeigt nicht auf das Original "aa". " aber ein neues „aa“.
str3=str2; Der (Wert) von str3 ist derselbe wie str2 und zeigt auf die gleiche Zeichenfolge, äquivalent.
Strings werden kopiert und als Referenz übergeben, nach Wert verglichen
Zahlen und boolesche Werte (wahr und falsch) werden kopiert, übergeben und nach Wert verglichen
Objekte, Arrays und Funktionen werden kopiert , übergeben und per Referenz verglichen