Heim Web-Frontend js-Tutorial Eine kurze Einführung in die implizite Typkonvertierung von JavaScript-Datentypen_Javascript-Fähigkeiten

Eine kurze Einführung in die implizite Typkonvertierung von JavaScript-Datentypen_Javascript-Fähigkeiten

May 16, 2016 pm 03:22 PM
implizite Typkonvertierung

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 oder implizite Konvertierung bezeichnet. Implizite Konvertierungen erfolgen üblicherweise mit den Operatoren Addition, Subtraktion, Multiplikation, Division, Gleichheit, Kleiner als, Größer als usw. .

typeof '11' //string    
typeof(11)  //number
'11' < 4   //false
Nach dem Login kopieren

In diesem Kapitel wird die implizite Datentypkonvertierung in JavaScript separat vorgestellt. Ein gutes Verständnis davon kann viele Vorgänge in praktischen Anwendungen vereinfachen.

Siehe das folgende Codebeispiel:

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

Der obige Code ist eine Operation zum impliziten Konvertieren eines Arrays in einen String. Ist das nicht viel einfacher als die folgende Methode:

var arr = [5];
console.log(arr.toString());
Nach dem Login kopieren

Implizite Datentypkonvertierungen wie die oben genannten werden häufig in der tatsächlichen Codierung verwendet.

1. Datentypkonvertierung zwischen Werttypen:

Informationen zu Datentypen in JavaScript finden Sie im Kapitel „Detaillierte Erläuterung der JavaScript-Datentypen“.

(1) Zahlen und Zeichenfolgen verwenden Operatoren:

Wenn Sie den Operator verwenden, um Zahlen und Zeichenfolgen zu bearbeiten, werden die Zahlen zuerst in Zeichenfolgen umgewandelt und dann werden Zeichenfolgenverkettungsoperationen ausgeführt:

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

(2). Operatoroperationen mit booleschen Werten:

Wenn es sich um einen booleschen Typ handelt, wird der boolesche Wert zunächst in die entsprechende Zahl oder Zeichenfolge umgewandelt und anschließend die entsprechende Zeichenfolgenverbindung oder arithmetische Operation ausgeführt.

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

Der obige Code wandelt zuerst true in die Zahl 1 um 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 eine Zeichenfolgenverkettung durchgeführt.

(3). Subtraktionsoperation:

Wenn eine Subtraktionsoperation ausgeführt wird, werden zuerst beide Operanden in Zahlen umgewandelt und dann wird die arithmetische Operation 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 von Multiplikation, Division, Größer als, Kleiner als und Subtraktion, daher werde ich keine Beispiele mehr nennen.

(4).==Gleichheitsoperation:

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

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

Beim Vergleich mit anderen Werttypen werden die Operanden in Zahlen umgewandelt

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

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:

Das Konvertieren von Referenztypen (Objekten) in Werttypen ist viel komplizierter. Die Verteilung wird 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 die Methode valueOf() aufrufen müssen, aber das ist nicht der Fall einfach, wenn es tatsächlich angewendet wird. Siehe das folgende Codebeispiel:

var obj = {
 webName: "脚本之家",
 url:"softwhy.com"
}
console.log(obj.toString());
Nach dem Login kopieren

Wie aus dem obigen Code ersichtlich ist, konvertiert die toString()-Methode das Objekt nicht in einen String, der dieses Objekt widerspiegelt.

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

Wie aus dem obigen Code ersichtlich ist, 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

数组对象的toString()方法能够将数组转换为能够反映此数组对象的字符串。

总结如下:

(1).有些对象只是简单继承了toString()或者valueOf()方法,比如第一个例子。
(2).有些对象则不但是继承了两个方法,而且还进行了重写。

所以有些对象的方法能够达成转换成字符串或者数字的目标,有些则不能。

调用toString()或者valueOf()将对象转换成字符串或者数字的规则如下:

调用toString()时,如果对象具有这个方法,则调用此方法;如果此方法返回一个值类型数据,那么就返回这个值类型数据,然后再根据所处的上下文环境进行相关数据类型转换。如果没有toString(),或者此方法返回值并不是一个值类型数据,那么就会调用valueOf()(如果此方法存在的话),如果valueOf()返回一个值类型数据,那么再根据所处的上下文环境进行相关的数据类型转换。

进一步说明:

(1).上面介绍了通常默认情况下valueOf()和toString()方法的作用(将对象转换为数字或者字符串),但是需要注意的是,这并不是硬性规定,也就是说并不是valueOf()方法必须要返回数字或者toString()方法必须要转换为字符串,比如简单继承的这两个方法就无法进行实现转换为数字和字符串的功能,再比如,我们可以自己称谢这两个方法,返回值也没有必要是数字或者字符串。

(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

以上内容是小编给大家介绍的JavaScript数据类型之隐式类型转换的全部内容,希望大家喜欢。

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Welche impliziten Typkonvertierungen gibt es in MySQL? Welche impliziten Typkonvertierungen gibt es in MySQL? Nov 14, 2023 am 11:28 AM

Zu den impliziten Typkonvertierungen, die es in MySQL gibt, gehören Zeichenfolgen in numerische Typen, Datums- und Uhrzeittypen, Gleitkomma- und Ganzzahltypen, NULL-Werte usw. Detaillierte Einführung: 1. Implizite Typkonvertierung von einem String in einen numerischen Typ. Wenn ein String mit einem numerischen Typ verglichen oder berechnet wird, konvertiert MySQL den String in einen numerischen Typ Konvertierung: In MySQL können Datums- und Uhrzeittypen auch eine implizite Typkonvertierung mit anderen Datentypen durchführen. 3. Implizite Typkonvertierung von Gleitkomma- und Ganzzahltypen usw.

Was sind implizite Typkonvertierungen und explizite Typkonvertierungen in der C-Sprache? Was sind implizite Typkonvertierungen und explizite Typkonvertierungen in der C-Sprache? Sep 08, 2023 pm 10:13 PM

Das Konvertieren eines Datentyps in einen anderen wird als Typkonvertierung bezeichnet. Implizite Typkonvertierung Explizite Typkonvertierung Implizite Typkonvertierung Der Compiler bietet eine implizite Typkonvertierung, wenn die Operanden unterschiedliche Datentypen haben. Dies geschieht automatisch durch den Compiler, indem er kleinere Datentypen in größere Datentypen konvertiert. inti,x;floatf;doubled;longintl;Hier ergibt der obige Ausdruck schließlich einen „double“-Wert. Beispiel Das Folgende ist ein Beispiel für die implizite Typkonvertierung-intx;for(x=97;x<=122;x++){ printf("%c",x);/*Im

Vergleich der Vor- und Nachteile von C++-Funktionsstandardparametern und variablen Parametern Vergleich der Vor- und Nachteile von C++-Funktionsstandardparametern und variablen Parametern Apr 21, 2024 am 10:21 AM

Zu den Vorteilen von Standardparametern in C++-Funktionen gehören die Vereinfachung von Aufrufen, die Verbesserung der Lesbarkeit und die Vermeidung von Fehlern. Die Nachteile sind eingeschränkte Flexibilität und Namensbeschränkungen. Zu den Vorteilen variadischer Parameter gehören unbegrenzte Flexibilität und dynamische Bindung. Zu den Nachteilen gehören eine größere Komplexität, implizite Typkonvertierungen und Schwierigkeiten beim Debuggen.

Typkonvertierung der Golang-Funktion Typkonvertierung der Golang-Funktion Apr 19, 2024 pm 05:33 PM

Durch die Typkonvertierung innerhalb der Funktion können Daten eines Typs in einen anderen Typ konvertiert werden, wodurch die Funktionalität der Funktion erweitert wird. Verwenden Sie die Syntax: Typname:=Variable.(Typ). Sie können beispielsweise die Funktion strconv.Atoi verwenden, um eine Zeichenfolge in eine Zahl umzuwandeln und Fehler zu behandeln, wenn die Konvertierung fehlschlägt.

Implizite Typkonvertierung: Eine Untersuchung verschiedener Variationen von Typen und ihrer Anwendungen in der Programmierung Implizite Typkonvertierung: Eine Untersuchung verschiedener Variationen von Typen und ihrer Anwendungen in der Programmierung Jan 13, 2024 pm 02:54 PM

Entdecken Sie die verschiedenen Arten impliziter Typkonvertierungen und ihre Rolle bei der Programmierung. Einführung: Bei der Programmierung müssen wir häufig mit verschiedenen Datentypen umgehen. Manchmal müssen wir einen Datentyp in einen anderen Typ konvertieren, um eine bestimmte Operation auszuführen oder bestimmte Anforderungen zu erfüllen. In diesem Prozess ist die implizite Typkonvertierung ein sehr wichtiges Konzept. Unter impliziter Typkonvertierung versteht man den Prozess, bei dem die Programmiersprache automatisch eine Datentypkonvertierung durchführt, ohne den Konvertierungstyp explizit anzugeben. In diesem Artikel werden die verschiedenen Arten impliziter Typkonvertierungen und ihre Rolle bei der Programmierung untersucht.

Mehrere Situationen, in denen ein MySQL-Index fehlschlägt Mehrere Situationen, in denen ein MySQL-Index fehlschlägt Feb 21, 2024 pm 04:23 PM

Häufige Situationen: 1. Verwenden Sie Funktionen oder Operationen; 3. Verwenden Sie ungleich (!= oder <>); Wert; 7. Niedrige Indexselektivität; 8. Prinzip des zusammengesetzten Indexes; 9. Optimierer-Entscheidung;

Detaillierte Erläuterung statischer Typen in der Go-Sprache Detaillierte Erläuterung statischer Typen in der Go-Sprache Apr 07, 2024 pm 05:42 PM

Die Go-Sprache verwendet statische Typisierung und führt zur Kompilierungszeit eine Typprüfung durch, um Laufzeittypfehler zu vermeiden. Zu den Grundtypen gehören Ganzzahlen, Gleitkommazahlen, boolesche Werte, Zeichenfolgen und Byte-Slices. Zu den zusammengesetzten Typen gehören Arrays, Slices, Strukturen, Schnittstellen und Kanäle. Die Go-Sprache unterstützt Typinferenz und verschiedene Typkonvertierungsoperatoren. Typaliase erleichtern die Lesbarkeit und Wartbarkeit des Codes. Statische Typisierung bringt Vorteile in Bezug auf Sicherheit, Leistung und Wartbarkeit.

Was ist der Unterschied zwischen int und float in der C-Sprache? Was ist der Unterschied zwischen int und float in der C-Sprache? Apr 29, 2024 pm 10:12 PM

Der Unterschied zwischen int- und float-Variablen in der C-Sprache besteht darin, dass sie unterschiedliche Typen haben: int wird zum Speichern von Ganzzahlen verwendet, während float zum Speichern von Dezimalzahlen verwendet wird. Speichergröße: Int benötigt normalerweise 4 Byte und Float benötigt ebenfalls 4 Byte. Präzision: int stellt eine exakte Ganzzahl dar, während float eine begrenzte Genauigkeit hat. Bereich: int liegt normalerweise im Bereich von -2^31 bis 2^31-1, während float einen größeren Bereich hat. Arithmetische Operationen: int und float können arithmetische Operationen und Vergleiche durchführen, die Ergebnisse können jedoch durch Genauigkeitseinschränkungen beeinträchtigt werden. Typkonvertierung: Zwischen int und float kann eine explizite oder implizite Typkonvertierung durchgeführt werden.

See all articles