Heim >Web-Frontend >js-Tutorial >Weniger beliebte Wissenspunkte zu JavaScript
Native Funktionen
Häufig verwendete native Funktionen
String()
Number()
Boolean()
Array()
Object()
Function()
RegExp()
Date()
Error()
Symbol()
Interne Eigenschaften [Klasse]
Alletypeof Objekte mit einem Rückgabewert von Objekt enthalten ein internes Attribut [Klasse], Dieses Attribut kann nicht direkt Zugriff, im Allgemeinen über Object.prototype.toString(..) .
Zum Beispiel :
Object.prototype.toString.call([1,2,3]); // " [ object Array]"Basistypwert
Object.prototype.toString.call(null); // "[object Null] "Packaging Object Wrapper
Da der Basistypwert nicht über .length und .toString verfügt () Solche Eigenschaften und Methoden.
Mit neuem
Keyword) var a = "abc"; var b = new String (a); var c = Object(a);
Dies ist im Allgemeinen nicht der Fall Es wird empfohlen, die gekapselte Funktion direkt zu verwenden
Entpacken
Um grundlegende Typwerte in Objekten zu kapseln, können Sie
valueOf verwenden ()Funktion.
var a = new String("abc");var b = new Number(42);var c = new Boolean(true);
a.valueOf(); // "abc" b.valueOf(); // 42 c.valueOf(); // wahrNative Funktion als Konstruktor
Array(..) var a = new Array(1,2,3); 🎜>a; // [1,2,3] var b = [1,2,3]
b; // [1,2,3]
KonstruktorArray(..),
muss nicht das Schlüsselwort new haben, es wird automatisch hinzugefügt, wenn nicht vorhanden ist enthalten Wenn derArray-Konstruktor nur einen Parameter akzeptiert, ist der Parameter die voreingestellte Länge des Arrays und nicht ein Element im Array. var a = new Array(3); a.length; // 3 a;
Nicht Erstellen und verwenden Sie leere ZellenarraysObject(..) , Function(..) ,
und RegExp(..)Sofern nicht unbedingt erforderlich, verwenden Sie nicht
Object(..) / Function(..)/ RegExp(..) Date(..)
undFehler(..)
Die Erstellungszeit muss new Date() verwenden. wird hauptsächlich verwendet, um den aktuellen Unix--Zeitstempel Datum zu erhalten .new() und rufen Sie es dann über getTime() im Datumsobjekt ab.
Erstellen Sie ein Fehlerobjekt (Fehlerobjekt) Hauptsächlich, um den aktuellen laufenden Kontext zu erhalten.
Symbol(..)
Grunddatentyp —— Symbol. Symbole haben eindeutige Sonderwerte. Wenn Sie sie zum Benennen von Attributen verwenden, führt dies nicht leicht zu doppelten Namen.
Statische Attributform von Symbol , Symbol.create, Symbol.iterator
obj[Sybol.iterator] = function() {/*..*/}
Verwenden Sie den nativen Konstruktor Symbol(..) , um Symbole anzupassen. Sie können keine neuen Schlüsselwort, sonst wird ein Fehler gemeldet.
var mysym = Symbol("mein eigenes Symbol"); mysym; // Symbol(mein eigenes Symbol) mysym.toString(); / "Symbol(mein eigenes Symbol)" typeof mysym; // "symbol" var a = { }; a[mysym ] = "foobar"; Object.getOwnPropertySymbols(a); // [Symbol(mein eigenes Symbol)]Prototyptyp
Der native Konstruktor verfügt über ein eigenes .prototype-Objekt wie: Array.prototype,
String.prototype.>
String#indexOf(..)Finden Sie die Position der angegebenen Zeichenfolge in der Zeichenfolge.
String#charAt(..)Holen Sie sich das Zeichen an der angegebenen Position in der Zeichenfolge
String#substr(.. ),String #substring(..)und String# segment(..)
Ruft den angegebenen Teil der Zeichenfolge ab
String#toUpperCase()und String#toLowerCase()
String in Groß- und Kleinbuchstaben umwandeln
String #trim()will be returned as a new string
到 〉
🎜> Typkonvertierung von Werten
Konvertieren eines Werts von Eins Typ zu einem anderen, dies ist der gezeigte Fall,
Implizite Fälle sind normalerweise Umwandlungen.Typkonvertierung in JavaScript
gibt immer einen skalaren Basistyp zurück.Abstrakte Wertoperation ToStringAbstrakte OperationToString , die für die Verarbeitung von Nicht-Werten verantwortlich ist -strings Umwandlung in einen String
Die StandardmethodetoString()
des Arrays wurde neu definiert, um alle Einheiten zu stringisieren , bevor sie miteinander verkettet werden.var a = [1,2,3];
a.toString(); // "1,2,3" JSONString-Ersatz,JSON.stringify(..) wird automatisch angezeigt, wenn im Objekt auf undefiniert, Funktion und Symbol gestoßen wird wird ignoriert und null wird im Array zurückgegeben.
Zum Beispiel:
JSON.stringify(undefiniert); // undefiniert
JSON.stringify(function(){}) ; // undefiniert
JSON.stringify(
[1,undefiniert,function(){},4]
); // "[1,null,null , 4]"
JSON.stringify(
{a:2,b:function(){}}
); // "{"a":2 } "
toJSON() sollte einen geeigneten Wert zurückgeben, der von jedem Typ sein kann, und dann JSON.stringify(. . ) Ausrichtung zur Stringifizierung.
ToNumber
Manchmal müssen Sie nicht numerische Werte als Zahlen verwenden, z. B. bei mathematischen Operationen.
true wird in 1 umgewandelt, false wird in 0, undefiniert wird in NaN
nullwird in 0 umgewandelt
Um den Wert in den entsprechenden Grundtyp umzuwandeln, prüft die abstrakte Operation ToPrimitive, zunächst, ob der Wert einen valueOf() Methode, und wenn ja, verwenden Sie sie. Der Wert wird umgewandelt. Wenn nicht, verwenden Sie den Rückgabewert von toString()
, um eine erzwungene Typkonvertierung durchzuführen. Wenn wedervalueOf() noch toString() den Wert zurückgeben, tritt ein TypeError -Fehler auf. ToBoolean
Falscher Wert:
Werte können in die folgenden zwei Kategorien unterteilt werden.1.
kann auf den Wert vonfalse 2.
Andere( ist ein leichter Typ, der in den Wert von true) konvertiert wird. Das Folgende sind falsche Werte
undefiniert
nullfalse+0,-0und
NaN""
Falsches Wertobjekt: In einigen spezifischen Fällen basiert der Browser auf der regulären
JavaScript-Syntax erstellt einige Fremdwerte, dies sind das „False Value Object“ True Value
Ein wahrer Wert ist ein Wert außerhalb der Liste der falschen Werte
Explizite Umwandlung
ccoleg in einer Zeichenfolge und einer Zahl
Banks Hand� Die Display-Cast-Konvertierung zwischen String und Zahl erfolgt durch String(..) Explizite Cast between 🎜>var b = String(a);var c = "3.14";
var d = Number(c);b; / "42"
d: // 3.14
Es gibt andere Möglichkeiten, eine Anzeigekonvertierung zwischen Zeichenfolgen und Zahlen zu erreichen
var a = 42 ;
var b = a.toString();
var c = "3.14";
var d = +c;b; "42"
d: // 3.14
Datumsanzeige in Zahl umwandeln Unärer Operator+ besteht darin, ein Datumsobjekt
(Datum)
in eine Zahl umzuwandeln.
var timestamp = +new Date(); Analysieren Sie die numerische Zeichenfolge explizit. Analysieren Sie die numerische Zeichenfolge Numbers und Das Rückgabeergebnis der Umwandlung einer Zeichenfolge in eine Zahl sind beide Zahlen.
Zum Beispiel:
var a = "42";
var b = "42px";Zahl (a); // 42
parseInt(a); // 42Number(b); // NaN
parseInt(b);Durch das Parsen kann die Zeichenfolge nicht numerische Zeichen enthalten. Das Parsen erfolgt in der Reihenfolge von links nach rechts. Wenn
auf ein nicht numerisches Zeichen stößt, wird es gestoppt.
parseInt(..)ist für Zeichenfolgen, wie
parseInt(..)
Es gibt keine Möglichkeit, Zahlen und andere Arten von zu übergeben Parameter Verwenden Sie , um die Konvertierung in einen booleschen Wert anzuzeigen.
ToBoolean ist explizit. ToBoolean obligatorisch Typkonvertierung:
var a = "0";
var b = [];var c = {}; var d = "";
var e = 0;var f = null;var g; Boolean(a); // trueBoolean(b); // trueBoolean(c); // true Boolea(d); // falseBoolea(e); // falseBoolea(f); // falseBoolea(g); / falseUnärer Operator! Wandeln Sie den Wert explizit in einen booleschen Wert um.
var a = "0";var b = [];var c = {};var d = "";
var e = 0;var f = null;var g; !!a; // wahr!!b; // wahr!!c; // wahr!!d; // false!!e; // false!!f; // false!!g; > Implizite Umwandlung Implizit vereinfachtImplizite Umwandlung zwischen Zeichenfolgen und Zahlen
Der +-Operator kann sowohl für die Addition von Zahlen als auch für die Verkettung von Zeichenfolgen verwendet werden.
var a = "42";
var b = "0";
var c= 42;
var d = 0 ;
a + b; // "42"
c + d; // 42
Objekts - Die Operation ähnelt + ;
var a = [3];
var b = [1];
a - b ; // 2
Implizite Umwandlung von boolescher Zahl in Zahl
implizite Umwandlung in booleschen Wert
Die folgenden Situationen führen zu einer impliziten Umwandlungskonvertierung
1.
2.für(..;...;..)Bedingter Urteilsausdruck in der Aussage(Der Zweite )
3.while(..)und do..while(..) Bedingungen in der Schleife Beurteilungsausdruck .
4.? : Bedingter Ausdruck in
5.Logischer Operator|| (Logisches ODER) und ( logisches UND ) Der Operand auf der linken Seite von (als bedingter Ausdruck)
||.und &&
|| Es muss vom booleschen Typ sein, aber der Wert eines der beiden Operandenvar a = 42;var b = "abc";var c = null;
a || b; // 42
a && b; // "abc"
c || // "abc"
null
wenn für
||
Wenn das bedingte Beurteilungsergebnis wahr ist, wird der Wert der ersten Zahl zurückgegeben werden. Wenn false ist, wird der zweite Operand zurückgegeben. && ist das Gegenteil.
Das Folgende ist eine sehr häufige||.
function foo(a,b){a = a ||. "hello";b = b || "world"; console.log(a + " " + b );}
foo(); // "Hallo Welt"
foo("yeah","yeah"); // "yeah yeah"
Symboldarstellung Entspannte Gleichheit und strikte Gleichheit"== erlaubt Umwandlungen in Gleichheitsvergleichen, während === nicht zulässt "
Abstrakte Gleichheit
Es gibt ein paar Unkonventionelle zu beachten
NaN ist nicht gleich NaN
+0 ist gleich -0
Relaxierte Ungleichheit != ist Das Gegenteil von == ist dasselbe wie !==
Zeichengleichheitsvergleich zwischen Zeichenfolgen und Zahlen
1.Wenn Type(x) eine Zahl ist, Type ( y) eine Zeichenfolge ist, wird das Ergebnis von x== ToNumber(y)
zurückgegeben.
2.Wenn Type(x) eine Zeichenfolge ist, Type(y) eine Zahl ist, wird das Ergebnis von ToNumber(x)== y zurückgegeben.
Gleichheitsvergleich zwischen anderen Typen und booleschen Typen
== == Der fehleranfälligste Ort ist wahr und false und anderen Typen
var a = "42";var b = true;a == b; // false1.Wenn Type(x) ein boolescher Typ ist, Geben Sie dann das Ergebnis von ToNumber(x) == y
2 zurück.IfType(y) ist ein boolescher Typ, dann wird das Ergebnis von x == ToNumber(y)
zurückgegeben. Zuerst:
var x = true;var y = "42";x == y; // falseUmgekehrt
var x = "42";var y = false;x == y; // false nullund undefiniert
==beinhaltet auch Einsiedlerabgüsse. 1.Wenn x
null ist, ist y undefiniert , dann ist das Ergebnis wahr 2.Wenn x undefiniert ist, ist y null, Das Ergebnis istwahr var a == null; var b; a == b; // wahr a == null; // wahr b == null; // wahr a == falsch b == false; // false a == "" ; // false b == "" // false a == 0; false b == 0; // false Gleichheitsvergleich zwischen Objekten und Nichtobjekten Über Objekte und (Objekt/Funktion/ Array) und Skalarprimitive (String/Number/Boolean Vergleich zwischen Werten ). 1.Wenn Type(x) eine Zeichenfolge oder Zahl ist, type(y) ist ein Objekt, gibt das Ergebnis von x == ToPrimitive(y) 2.If Type(x) ist ein Objekt, Type(y) ist eine Zeichenfolge oder Zahl, dann return . Same Das Ergebnis ist true, sollte b wandelt über ToPromitive , um und gibt den Basistypwert "abc" zurück, gleich a . Das Folgende sind regelmäßige und unkonventionelle Vergleiche "0" = = null; // false "0" == undefiniert; // false "0" == false -- "0" == NaN; // false "0" == 0; // true "0" == "" / / false false == null; // false false == undefiniert; // false false == NaN; false == 0; // true -- false == "" // true -- Halo! false == [] // wahr – Halo! false == {} // false "" == null; // false "" == undefiniert; // false "" == NaN; // false "" == 0; // true -- Halo! "" == []; // true -- Halo! "" == {}; // false 0 == null; // false 0 == undefiniert; // false 0 == NaN; // false 0 == [] -- Halo! 0 == {}; false Weil es sich um falsch positive Ergebnisse handelt. Extremfälle [] == ![] // true Erzwungene Typkonvertierung boolescher Werte [] == ![] wird zu [] == false, 2 == [2] = = [null] ; //true 42 == "43" // false "foo" == 42; // false "true" = '"" // false 42 == "42" // true "foo" == ["foo"] // true Implizite Umwandlung sicher verwenden 1.Wenn die Werte auf beiden Seiten wahr sind Oder falsch, Niemals == verwenden. 2.Wenn auf beiden Seiten [] ,"" oder 0 , versuchen Sie, == nicht zu verwenden. Zu diesem Zeitpunkt ist es am besten, dies zu tun Verwenden Sie === , um eine erzwungene Typkonvertierung zu vermeiden. Abstrakter Beziehungsvergleich Beide Seiten sind String-Vergleiche werden nicht in Zahlen umgewandelt, da ToPrimitive eine Zeichenfolge zurückgibt und vergleicht die beiden Zeichenfolgen "42 " "043" , da "0" alphabetisch kleiner ist als "4", also ist das Endergebnis Ähnlich var a = [4,2];var b = [0,4,3]; a < b; a wird in "4,2" umgewandelt, b wird in umgewandelt „ 0,4,3“ Derselbe Stil wird in alphabetischer Reihenfolge verglichen. var a = {b: 42}; var b = {b:43}; a < b ; // false a ist [Objekt Objekt], b ist auch [Objekt Objekt] also in alphabetischer Reihenfolge a < b ist nicht wahr. Das folgende Beispiel var a = {b: 42}; var b = {b:43}; a < // false a == b; // false a <= b; // wahr a >= b; // wahr
Das obige ist der detaillierte Inhalt vonWeniger beliebte Wissenspunkte zu JavaScript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!