Heim > Web-Frontend > js-Tutorial > Einige seltsame Verhaltensweisen von JavaScript-Arrays_Javascript-Tipps

Einige seltsame Verhaltensweisen von JavaScript-Arrays_Javascript-Tipps

WBOY
Freigeben: 2016-05-16 15:18:30
Original
1339 Leute haben es durchsucht

Die Bedeutung von Arrays in Programmiersprachen ist selbstverständlich. Arrays sind auch eines der am häufigsten verwendeten Objekte. Aufgrund ihrer schwachen Typen sind Arrays in JavaScript sehr flexibel Im Gegensatz zu Arrays in stark typisierten Hochsprachen wie Java, die nur Elemente desselben Typs oder seiner Untertypen speichern können, kann JavaScript mehrere Elementtypen im selben Array speichern und die Länge kann auch dynamisch angepasst werden. wenn die Daten zunehmen oder automatische Änderungen an der Array-Länge reduzieren.

Heute habe ich JavaScript-Arrays überprüft und dann einige seiner seltsamen Verhaltensweisen zusammengefasst. Wenn es Fehler gibt, weisen Sie sie bitte darauf hin!

Seltsam 1: Die Konstruktorfunktion Array() kann ohne Verwendung des neuen Schlüsselworts aufgerufen werden:

Der Array()-Konstruktor verwendet die ihm als Elemente des Arrays übergebenen Parameter, um ein Array zu erstellen. Im Allgemeinen nennen wir es wie folgt:

var a = new Array(1, 2, "bom!");
a.length; //3
console.log(a); //[1, 2, "bom!"] 
Nach dem Login kopieren

Es ist jedoch auch möglich, new wie folgt wegzulassen:

var a = Array(1, 2, "bom!");
a.length; //3
console.log(a); //[1, 2, "bom!"] 
Nach dem Login kopieren

Obwohl ich den internen Implementierungsmechanismus nicht kenne, vermute ich, dass seine Konstruktorfunktion wie folgt definiert sein könnte:

function Array(args) {
//如果,this不是Array的实例的话,
//说明不是通过new调用的,则在这里再重新调用
if( !this instanceof Array) {
return new Array(args);
}//后面是正常调用时的实现代码<br />//...<br />} 
Nach dem Login kopieren

Seltsam 2: Wenn nur ein Parameter an den Konstruktor übergeben wird, ist das Verhalten unvorhersehbar

Wenn nur ein Parameter übergeben wird und dieser Parameter eine Ganzzahl ist, wird ein Array erhalten, und die Länge entspricht diesem Parameter

var a = new Array(12);
console.log(a.length); //12
console.log(a); //[] 
Nach dem Login kopieren

Wenn Sie nur eine Gleitkommazahl übergeben, wird ein Fehler gemeldet:

var a = new Array(1.1); //Uncaught RangeError: Invalid array length(…) 
Nach dem Login kopieren

Die Übergabe einer Zeichenfolge funktioniert einwandfrei, wobei die Zeichenfolge das erste Element des Arrays ist:

var a = new Array("1.1");
console.log(a.length); //
console.log(a); //["1.1"] 
Nach dem Login kopieren

Aber um Mehrdeutigkeiten zu vermeiden, schlage ich vor, dass es am besten ist, das Array direkt in Form von Literalen zu erstellen:

var a = []; //空数组
var a = [1, 1, "bom"]; //三个元素
var a = [12]; //一个元素,并且元素是12 
Nach dem Login kopieren

Seltsam 3: Das Längenattribut des Arrays kann geändert (beschreibbar) werden

Wie folgt haben wir die Länge direkt von 2 auf 100 geändert und die Änderung war erfolgreich! ! !

var a = [1, 2, 3, 4];
console.log(a.length); //4
a.length = 100; 
console.log(a.length); //100 
Nach dem Login kopieren

Obwohl die Länge gleich 100 ist, existieren die Elemente a[4]-a[99] nicht, und wenn Sie ihre Werte anfordern, zum Beispiel in einer Schleife von 0 bis a.length, werden sie undefiniert .

Als nächstes ansehen:

var a = [1, 2, 3, 4];
a.length = 100;
console.log(a[10]); //undefined
console.log(99 in a); //false 
Nach dem Login kopieren

Etwas ähnlich dem folgenden Beispiel:

var a = [1, 2, 3, 4];
a[99] = undefined;
console.log(a.length); //100 
Nach dem Login kopieren

Der Unterschied besteht darin, dass a[99] hier existiert, weil wir es erstellt haben, auch wenn es einen undefinierten Wert hat. Es existieren jedoch nicht alle Elemente von a[4] bis a[98], wie folgt:

var a = [1, 2, 3, 4];
a[99] = undefined;
console.log(99 in a); //true;
console.log(98 in a); //false
console.log(a.length); //100 
Nach dem Login kopieren

Das Obige hat Ihnen einige seltsame Verhaltensweisen von JavaScript-Arrays mitgeteilt. Bitte verzeihen Sie mir, wenn der Artikel nicht gut geschrieben ist, danke!

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