소개
대학 시절부터 Java, JavaScript, Pascal, ABAP , PHP, Progress 4GL, C / C ++ 및 아마도 내가 생각할 수없는 다른 언어로 프로그래밍했습니다.
모두 고유 한 언어 특성이 있지만 이러한 각 언어는 동일한 기본 개념을 많이 공유합니다. 이러한 개념에는 프로 시저 / 함수,- IF
문,- FOR
루프 및- WHILE
루프가 포함됩니다.
전통적인 for
루프
전통적인 for
루프에는 세 가지 구성 요소가 있습니다.
- 초기화 : look 블록이 처음 실행되기 전에 실행
- 조건 : 루프 블록이 실행될 때마다 조건을 확인하고 false 인 경우 루프를 종료합니다.
- 추후 : 루프 블록이 실행될 때마다 수행
이 세 구성 요소는 ;
기호로 서로 분리되어 있습니다 . 이 세 가지 구성 요소 각각에 대한 내용은 선택 사항이므로 다음은 for
가능한 가장 작은 루프입니다.
for (;;) {
// Do stuff
}
물론, 당신은 포함해야합니다 if(condition === true) { break; }
또는 if(condition === true) { return; }
그 내부 어딘가 for
가 실행 중지 갈 수 -loop을.
그러나 일반적으로 초기화는 인덱스를 선언하는 데 사용되며 조건을 사용하여 해당 인덱스를 최소 또는 최대 값과 비교하고 이후에 인덱스를 증가시키는 데 사용됩니다.
for (var i = 0, length = 10; i < length; i++) {
console.log(i);
}
전통적인 for
루프를 사용 하여 어레이를 반복
배열을 반복하는 전통적인 방법은 다음과 같습니다.
for (var i = 0, length = myArray.length; i < length; i++) {
console.log(myArray[i]);
}
또는 뒤로 루프하는 것을 선호하는 경우 다음을 수행하십시오.
for (var i = myArray.length - 1; i > -1; i--) {
console.log(myArray[i]);
}
그러나 예를 들어 다음과 같은 많은 변형이 가능합니다.
for (var key = 0, value = myArray[key], length = myArray.length; key < length; value = myArray[++key]) {
console.log(value);
}
... 또는 이건 ...
var i = 0, length = myArray.length;
for (; i < length;) {
console.log(myArray[i]);
i++;
}
... 또는 이것 :
var key = 0, value;
for (; value = myArray[key++];){
console.log(value);
}
가장 잘 작동하는 것은 주로 개인적인 취향과 구현중인 특정 사용 사례의 문제입니다.
이러한 각 변형은 매우 오래된 브라우저를 포함하여 모든 브라우저에서 지원됩니다!
while
루프
for
루프에 대한 한 가지 대안 은 while
루프입니다. 배열을 반복하려면 다음을 수행하십시오.
var key = 0;
while(value = myArray[key++]){
console.log(value);
}
기존 for
루프 와 마찬가지로 while
루프는 가장 오래된 브라우저에서도 지원됩니다.
또한 모든 while 루프를 루프로 다시 작성할 수 있습니다 for
. 예를 들어, 위의 while
루프는 다음과 같은 방식으로 작동합니다 for
.
for(var key = 0; value = myArray[key++];){
console.log(value);
}
For...in
과 for...of
JavaScript에서 다음을 수행 할 수도 있습니다.
for (i in myArray) {
console.log(myArray[i]);
}
그러나 for
모든 경우에 기존 루프 와 동일하게 작동하지 않으므로 고려해야 할 잠재적 부작용이 있으므로주의해서 사용해야합니다. 배열 반복과 함께 "for ... in"을 사용하는 것이 좋지 않은 이유를 참조하십시오 .자세한 사항은.
에 대한 대안으로 for...in
현재도 있습니다 for...of
. 다음 예제는 for...of
루프와 루프 의 차이점을 보여줍니다 for...in
.
var myArray = [3, 5, 7];
myArray.foo = "hello";
for (var i in myArray) {
console.log(i); // logs 0, 1, 2, "foo"
}
for (var i of myArray) {
console.log(i); // logs 3, 5, 7
}
또한 Internet Explorer를 지원하지 않는 버전 for...of
( Edge 12+ 는 지원 하지 않음) 이상 이며 for...in
Internet Explorer 10 이상 이 필요하다는 점을 고려해야합니다 .
Array.prototype.forEach()
for
-loops 의 대안 Array.prototype.forEach()
은 다음 구문을 사용하는 것입니다.
myArray.forEach(function(value, key, myArray) {
console.log(value);
});
Array.prototype.forEach()
Internet Explorer 9 이상뿐만 아니라 모든 최신 브라우저에서 지원됩니다.
도서관
마지막으로 많은 유틸리티 라이브러리에도 고유 한 foreach
변형이 있습니다. 가장 인기있는 세 가지 AFAIK는 다음과 같습니다.
jQuery.each()
에서 jQuery를 :
$.each(myArray, function(key, value) {
console.log(value);
});
_.each()
에 Underscore.js :
_.each(myArray, function(value, key, myArray) {
console.log(value);
});
_.forEach()
에 Lodash.js :
_.forEach(myArray, function(value, key) {
console.log(value);
});