반응형
1. While
- 표현식 값이 true일때 까지 블록 내에 코드를 반복한다.
- 무한 루프를 만들수 있다.
let count = 0:
while(count < 10) {
console.log(count);
count++;
}
2. do/while
- while문과 비슷하지만 첫번째 루프는 무조건 실행한다.
function printArray(a) {
let len = a.length, i = 0;
if (len === 0) {
console.log("Empty Array");
} else {
do {
console.log(a[i]);
} while(++i < len)
}
}
3. for
- 카운트 변수를 초기화해서 해당 변수가 어떤 값이 도달할때 까지 루프 수행
- 구조는 for(변수 초기화, 변수 조건식, 증감식)
for(let count=0; count<10; count++) {
console.log(count);
}
// 아래와 같은 형태도 가능
let i, j, sum = 0;
for(i=0, j=0; i<10; i++, j--) {
sum += i * j;
}
// 연결된 리스트 obj의 마지막을 반환
function tail(obj) {
// obj가 true 값이면 반복
for(; obj.next; obj = obj.next) /* 비움 */ ;
return obj;
}
4. for/of
- 이터러블(iterable) 객체(배열, 문자열, 세트 맵)에서 동작한다.
// 배열 사용법
let data = [1,2,3,4,5,6,7,8,9], sum = 0;
for(let element of data) {
sum += element;
}
// 객체는 사용할 수 없지만 keys, values entries을 통해서 사용가능
let obj = {x:1, y:2, z:3};
let keys = "";
for(let k of Object.keys(obj)) {
keys += k;
}
let sum = 0;
for(let v of Object.values(obj)) {
sum += v;
}
let pairs = "";
for(let [k, v] of Object.entries(obj)) {
pairs += k + v;
}
// 문자열 사용법
let frequency = {};
for(let letter of "mississippi") {
if(frequency[letter]) {
frequency[letter]++;
} else {
frequency[letter] = 1;
}
}
// 세트
let text = "Na na na na na na na na Batman!";
let wordSet = new Set(text.split(" "));
let unique = [];
for (let word of wordSet) {
unique.push(word);
}
// 맵
let m = new Map([[1, "one"]]);
for(let [key, value] of m) {
console.log(key, value)
}
// for/await를 사용한 비동기 순회
async function printStream(stream) {
for await(let chunk of stream) {
console.log(chunk);
}
}
5. for/in
- for/of와 비슷하지만 이터러블 객체가 아니더라도 사용가능
for(let p in obj){ // obj의 프로퍼티 이름을 변수 p에 할당
console.log(obj[p]); //각 프로퍼티 값을 출력
}
let obj = {x:1, y:2, z:3};
let a = [], i = 0;
for(a[i++] in obj) {} //객체의 경우 i는 프로퍼티 값이 온다.
// a = ['x','y','z']
// 배열을 사용할 경우
for (let i in a) console.log(a[i]) //배열의 경우 i는 배열 인덱스 값이 온다.
반응형
'Javascript > Js' 카테고리의 다른 글
JS 객체(1) (0) | 2022.05.29 |
---|---|
JS 점프문 (0) | 2022.05.28 |
JS 표현문, 선언문, 조건문 (0) | 2022.05.24 |
JS 연산자 (0) | 2022.05.23 |
JS 표현식 (0) | 2022.05.22 |