Heim > Web-Frontend > js-Tutorial > Hauptteil

Ausführliche Erläuterung der Anwendungsbeispiele für die Konvertierung von JavaScript-Werttypen und Referenztypen

伊谢尔伦
Freigeben: 2017-07-18 16:26:40
Original
1634 Leute haben es durchsucht

JavaScript-Datentypen sind in sechs Typen unterteilt, nämlich null, undefiniert, boolesch, Zeichenfolge, Zahl und Objekt. Objekt ist ein Referenztyp und die anderen fünf sind Basistypen oder primitive Typen. Mit der Methode typeof können wir ausdrucken, zu welchem ​​Typ etwas gehört. Um Variablen unterschiedlichen Typs zu vergleichen, müssen Sie zunächst den Typ konvertieren. Dies wird als Typkonvertierung bezeichnet und wird auch als implizite Konvertierung bezeichnet. Implizite Konvertierungen erfolgen üblicherweise mit den Operatoren Addition, Subtraktion, Multiplikation, Division, Gleichheit, Kleiner als, Größer als usw. .

1. Datentypkonvertierung zwischen Werttypen:

Informationen zu Datentypen in JavaScript finden Sie in der detaillierten Erläuterung der JavaScript-Datentypen 1 Kapitel.

(1). Zahlen und Zeichenfolgen verwenden den +-Operator:

Wenn Zahlen und Zeichenfolgen zur Operation den +-Operator verwenden, werden die Zahlen zunächst in Zeichenfolgen umgewandelt. und führen Sie dann eine Zeichenfolgenverkettungsoperation aus:


var antzone = "antzone";
var num = 8;
console.log(antzone+num);
Nach dem Login kopieren

(2 + Operatoroperation mit booleschen Werten:

Wenn vorhanden). Handelt es sich um einen booleschen Typ, wird zunächst der boolesche Wert in die entsprechende Zahl oder Zeichenfolge konvertiert und anschließend die entsprechende Zeichenfolgenverbindung bzw. Rechenoperation ausgeführt.


var bool = true;
var num = 8;
console.log(bool + num);
Nach dem Login kopieren

Der obige Code konvertiert zuerst true in die Zahl 1 und führt dann eine arithmetische Addition durch.


var bool = true;
var num = "8";
console.log(bool + num);
Nach dem Login kopieren

Der obige boolesche Wert wird in die entsprechende Zeichenfolgenform „true“ konvertiert und anschließend wird die Zeichenfolgenverkettung durchgeführt.

(3). Subtraktionsoperation:

Wenn eine Subtraktionsoperation ausgeführt wird, werden zuerst beide Operanden in Zahlen umgewandelt und dann werden arithmetische Operationen ausgeführt:


var bool = true;
var num = "8";
console.log(bool - num);
Nach dem Login kopieren

true wird in die Zahl 1 umgewandelt, die Zeichenfolge „8“ wird in die Zahl 8 umgewandelt und dann werden arithmetische Operationen ausgeführt.

Das Gleiche gilt für die Umrechnungen Multiplikation, Division, Größer als, Kleiner als und Subtraktion, daher werde ich keine Beispiele mehr nennen.

(4).==Gleichheitsoperation:

undefiniert und null sind speziell. Sie verwenden beide den ==-Operator, um true zurückzugeben.


console.log(undefined==null);
Nach dem Login kopieren

Beim Vergleich anderer Werttypen werden die Operanden in Zahlen umgewandelt


console.log("3"==3);
Nach dem Login kopieren

Die Der obige Code wandelt die Zeichenfolge „3“ in eine Zahl um und vergleicht sie dann.


console.log("1"==true);
Nach dem Login kopieren

Der obige Code wandelt „1“ und „true“ jeweils in Zahlen um und vergleicht sie dann.

2. Referenztyp in Werttyp konvertieren:

Referenztyp (Objekt) in Werttyp konvertieren ist viel komplizierter unten vorgestellt.

Die beiden Methoden der Objektvererbung können uns helfen, die Konvertierungsfunktion vom Objekt- in den Werttyp zu realisieren:

(1).toString()-Methode.

(2).valueOf() Methode.

Normalerweise gehen wir davon aus, dass Sie zum Konvertieren eines Objekts in eine Zeichenfolge die Methode toString() aufrufen müssen, und zum Konvertieren eines Objekts in eine Zahl müssen Sie jedoch die Methode valueOf() aufrufen. Es ist nicht so einfach, wenn es tatsächlich angewendet wird:


var obj = {
 webName: "phpcn",
 url:"php.cn"
}
console.log(obj.toString());
Nach dem Login kopieren

Wie Sie dem obigen Code entnehmen können, ist dies bei der toString()-Methode der Fall Konvertieren Sie das Objekt nicht in eine Zeichenfolge, die dieses Objekt widerspiegelt.


var arr = [1, 2, 3];
console.log(arr.valueOf());
Nach dem Login kopieren

Wie Sie dem obigen Code entnehmen können, wandelt die Methode valueOf() das Objekt nicht in eine Zahl um, die dieses Objekt widerspiegelt.


var arr = [1, 2, 3];
console.log(arr.toString());
Nach dem Login kopieren

Die toString()-Methode des Array-Objekts kann das Array in einen String konvertieren, der dieses Array-Objekt widerspiegelt.

wird wie folgt zusammengefasst:

(1) Einige Objekte erben einfach die Methode toString() oder valueOf(), z Erstes Beispiel.
(2). Einige Objekte erben nicht nur zwei Methoden, sondern schreiben sie auch neu.

Daher können einige Objektmethoden das Ziel der Konvertierung in Zeichenfolgen oder Zahlen erreichen, andere nicht.

Die Regeln für den Aufruf von toString() oder valueOf() zum Konvertieren eines Objekts in eine Zeichenfolge oder Zahl lauten wie folgt:

Wenn das Objekt beim Aufruf von toString() über diese Methode verfügt, wird dies angezeigt Die Methode wird aufgerufen. Wenn diese Methode Daten vom Werttyp zurückgibt, werden diese Daten vom Werttyp zurückgegeben und anschließend wird die entsprechende Datentypkonvertierung entsprechend dem Kontext durchgeführt. Wenn toString() nicht vorhanden ist oder der Rückgabewert dieser Methode keine Daten vom Werttyp ist, wird valueOf() aufgerufen (falls diese Methode vorhanden ist). Wenn valueOf() Daten vom Typ Wert zurückgibt, dann gemäß Kontextumgebung, um relevante Datentypkonvertierungen durchzuführen.

Weitere Erklärung:

(1) Oben werden standardmäßig die Funktionen der Methoden valueOf() und toString() vorgestellt (Konvertieren von Objekten in Zahlen oder Zeichenfolgen), aber Sie müssen darauf achten Die Sache ist, dass dies keine feste Regel ist, das heißt, die Methode valueOf() darf keine Zahl zurückgeben oder die Methode toString() muss in einen String konvertiert werden. Diese beiden einfach geerbten Methoden können dies beispielsweise nicht in Zahlen umgewandelt werden und Die Funktion von Zeichenfolgen, ein weiteres Beispiel: Wir können diese beiden Methoden selbst verwenden, und der Rückgabewert muss keine Zahl oder Zeichenfolge sein.

(2).还有需要特别注意的一点就是,很多朋友认为,转换为字符串首先要调用toString()方法, 其实这是错误的认识,我们应该这么理解,调用toString()方法可以转换为字符串,但不一定转换字符串就是首先调用toString()方法。

看如下代码实例:


var arr = [];
arr.valueOf = function () { return "1"; }
arr.toString = function () { return "2"; }
console.log(arr + "1");
Nach dem Login kopieren

上面的代码中,arr是要被转换为字符串的,但是很明显是调用的valueOf()方法,而没有调用toString()方法。有些朋友可能会有这样的质疑,难道[2]这样的数字转换成字符串"2",不是调用的toString()方法吗。

代码如下:


var arr = [2];
console.log(arr + "1");
Nach dem Login kopieren

其实过程是这样的,首先arr会首先调用valueOf()方法,但是数字的此方法是简单继承而来,并没有重写(当然这个重写不是我们实现),返回值是数组对象本身,并不是一个值类型,所以就转而调用toString()方法,于是就实现了转换为字符串的目的。

总结如下:

大多数对象隐式转换为值类型都是首先尝试调用valueOf()方法。但是Date对象是个例外,此对象的valueOf()和toString()方法都经过精心重写,默认是调用toString()方法,比如使用+运算符,如果在其他算数运算环境中,则会转而调用valueOf()方法。

代码实例如下:


var date = new Date();
console.log(date + "1");
console.log(date + 1);
console.log(date - 1);
console.log(date * 1);
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonAusführliche Erläuterung der Anwendungsbeispiele für die Konvertierung von JavaScript-Werttypen und Referenztypen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!