Heim >Web-Frontend >js-Tutorial >for/in-Schleifen und Verwendungstipps in javascript_javascript-Tipps
JavaScript unterstützt verschiedene Arten von Schleifen:
for – Durchläuft einen Codeblock eine bestimmte Anzahl von Malen
for/in – Schleife durch die Eigenschaften eines Objekts
while – Durchläuft den angegebenen Codeblock, wenn die angegebene Bedingung wahr ist
do/while – führt auch eine Schleife des angegebenen Codeblocks durch, wenn die angegebene Bedingung wahr ist
1. im Operator : Der Operand auf der linken Seite muss eine Zeichenfolge sein oder kann in eine Zeichenfolge umgewandelt werden, und der Operand auf der rechten Seite ist ein Objekt oder Array. Gibt „true“ zurück, wenn der Wert auf der linken Seite dieses Operators ein Eigenschaftsname des Objekts auf der rechten Seite ist.
Zum Beispiel:
var point={x:1,y:2}; //对象直接量 var has_x="x" in point; //返回true var has_z="z" in point; //返回false var ts="toString" in point;//返回true,toString为继承方法
2. for/in-Anweisung: Syntax,
für (Variable im Objekt)
Aussage;
Bietet eine Möglichkeit zum Durchlaufen von Objekteigenschaften.
Beispiel:
for(var prop in my_object) { document.write("name:"+prop+";value:"+my_object[prop],"<br>"); }
JavaScript-Arrays sind eine besondere Art von Objekten, daher kann die for/in-Schleife Array-Indizes genau wie Objekteigenschaften aufzählen.
Sie können alle Eigenschaftsnamen eines Objekts in ein Array kopieren,
Beispiel:
var o= {x:1,y:2,z:3}; var a=new Array(); var i=0; for (a[i++] in o) ;//空语句,用于初始化数组
3. Der in-Operator unterscheidet sich von der for/in-Anweisung . Die linke Seite der for/in-Anweisung in kann eine Variable, ein Element eines Arrays oder eine sein Attribut eines Objekts. Es kann nicht verwendet werden.
4. Der häufig verwendete Zugriffsattributoperator für Arrays ist „[]“ anstelle von „.“ Verwenden Sie „[]“, um Attributzeichenfolgenwerte zu benennen, die dynamisch sind und zur Laufzeit geändert werden können, anstelle eines Bezeichners „.“
Beispiel:
var stock_name= get_stock_name_from_user();//从用户处获取股票名 var share= get_number_of_shares();//得到股票数量 portfolio[stock_name]= share;//动态地创建数组股票,并为每支股票赋值 将该例子与for/in循环一起使用,当用户输入了他的投资组合,可以计算当前总值 var value= 0; for (stock in portfolio) { value +=get_share_value(stock)*portfolio[stock]; }
Aktien hinterlegen und heben den Namen jeder Aktie ab.
Portfolio[stock] zahlt die Menge jedes Bestands ein und aus.
for-in-Schleife
Funktion: Objektattribute durchlaufen und sowohl Attributnamen als auch Attributwerte extrahieren
var obj = { "key1":"value1", "key2":"value2", "key3":"value3" }; function EnumaKey(){ for(var key in obj ){ alert(key); } } function EnumaVal(){ for(var key in obj ){ alert(obj[key]); } } EnumaKey(obj) //key1 key2 key3 EnumaVal(obj) //value1 value2 value3
Arrays können auch auf diese Weise durchlaufen werden, dies wird jedoch nicht empfohlen, da die Reihenfolge nicht garantiert werden kann und wenn dem Prototyp des Arrays ein Attribut hinzugefügt wird, wird dieses Attribut ebenfalls durchlaufen.
For-in-Schleifen sollten zum Durchlaufen von Nicht-Array-Objekten verwendet werden. Die Verwendung von for-in-Schleifen wird auch als „Aufzählung“ bezeichnet.
Technisch gesehen können Sie eine For-In-Schleife über ein Array verwenden (da Arrays Objekte in JavaScript sind), dies wird jedoch nicht empfohlen. Denn wenn das Array-Objekt mit benutzerdefinierten Funktionen erweitert wurde, kann es zu Logikfehlern kommen. Darüber hinaus ist in for-in die Reihenfolge (Sequenz) der Attributliste nicht garantiert. Daher ist es am besten, eine normale for-Schleife für Arrays und eine for-in-Schleife für Objekte zu verwenden.