Da ich an VB und Delphi gearbeitet habe, bin ich immer ein wenig verwirrt darüber, wie der Schleifenwert beim Schreiben einer C / C ++ - Anweisung wie JavaScript angegeben wird. Notieren Sie sich dies.
Die einfache Methode zum Schreiben, wenn der Indexwert eine Schleife von 0 bis zur Länge -1 durchlaufen soll, lautet wie folgt.
i ++ und i-- respektierten JsLint und versuchten, es nicht zu verwenden.
var str = 'abc';
for (var i = 0; i <= str.length - 1; i += 1) {
console.log(str[i]);
}
//Ausgabe in der Reihenfolge a b c
Ich denke jedoch, dass es ein Sprachmerkmal des C-Typs für die Anweisung ist, aber der Endbeurteilungsteil der for-Schleife für jede Schleife
i <= str.length - 1
Da dies ausgewertet wird, tritt jedes Mal der Prozess des Erhaltens der Länge auf, wodurch die Schleife etwas verlangsamt wird.
Daher ist es besser, zuerst einer Variablen die Anzahl der Schleifen zuzuweisen, wobei der Schwerpunkt auf der Beschleunigung liegt.
```javascript
var str = 'abc';
for (var i = 0, il = str.length - 1; i <= il; i += 1) {
console.log(str[i]);
}
//Ausgabe in der Reihenfolge a b c
Dies ist auch so geschrieben.
var str = 'abc';
for (var i = 0, il = str.length; i < il; i += 1) {
console.log(str[i]);
}
//Ausgabe in der Reihenfolge a b c
Dies macht es schwierig, den Endwert der Schleife zu lesen, was mich immer noch ein wenig unwohl fühlt, aber für C / C ++ / Java-Leute ist es nicht unlesbar, so dass es ein Code ist, den ich oft sehe. Es wäre schön, es lesen zu können.
In umgekehrter Reihenfolge ist es besser, so zu schreiben.
var str = 'abc';
for (var i = str.length - 1; 0 <= i; i -= 1) {
console.log(str[i]);
}
//Ausgabe in der Reihenfolge von c b a
Wenn Sie die for-Syntax entwickeln und verwenden, können Sie auch Folgendes tun.
for (var i = str.length; i--;) {
console.log(str[i]);
}
//Ausgabe in der Reihenfolge von c b a
Der vollständige Text der Funktionsprüfung lautet wie folgt.
index.html
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title></title>
<script>
var str = 'abc';
for (var i = 0; i <= str.length - 1; i += 1) {
console.log(str[i]);
}
//Ausgabe in der Reihenfolge a b c
for (var i = 0, il = str.length - 1; i <= il; i += 1) {
console.log(str[i]);
}
//Ausgabe in der Reihenfolge a b c
for (var i = 0, il = str.length; i < il; i += 1) {
console.log(str[i]);
}
//Ausgabe in der Reihenfolge a b c
for (var i = str.length - 1; 0 <= i; i -= 1) {
console.log(str[i]);
}
//Ausgabe in der Reihenfolge von c b a
for (var i = str.length; i--;) {
console.log(str[i]);
}
//Ausgabe in der Reihenfolge von c b a
</script>
</head><body>
</body></html>
Recommended Posts