๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
JavaScript

[JS] ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ - ๋ฐ˜๋ณต๋ฌธ

by ํฌ๊ตฌ๋ฆฌ 2021. 1. 29.

๐Ÿ“Œ ๋ฐฐ์—ด

๋ฐฐ์—ด์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ž๋ฃŒ๋ฅผ ํ•œ๊บผ๋ฒˆ์— ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๋Š” ์ž๋ฃŒํ˜•์ด๋‹ค.

๋Œ€๊ด„ํ˜ธ ๋‚ด๋ถ€์˜ ๊ฐ ์ž๋ฃŒ๋Š” ์‰ผํ‘œ๋กœ ๊ตฌ๋ถ„ํ•œ๋‹ค.

๋ฐฐ์—ด์—๋Š” ์—ฌ๋Ÿฌ ์ž๋ฃŒํ˜•์ด ์„ž์—ฌ ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค.

 

 

let array = [279, 1013, 'SSAFY', 'AI', true, false]

 

๋ฐฐ์—ด ์•ˆ์— ๋“ค์–ด ์žˆ๋Š” ๊ฐ ์ž๋ฃŒ๋ฅผ ์š”์†Œ(Element)๋ผ๊ณ  ํ•œ๋‹ค.

๋ฐฐ์—ด์˜ ์š”์†Œ์— ์ ‘๊ทผํ•  ๋•Œ๋Š” ๋Œ€๊ด„ํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, ๋Œ€๊ด„ํ˜ธ ์•ˆ์— ๋„ฃ๋Š” ์ˆซ์ž๋ฅผ ์ธ๋ฑ์Šค(Index)๋ผ๊ณ  ํ•œ๋‹ค.

์ธ๋ฑ์Šค๋Š” 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•œ๋‹ค.

 

console.log(array[0]); // 279
console.log(array[1]); // 1013
console.log(array[2]); // 'SSAFY'
console.log(array[3]); // 'AI'
console.log(array[4]); // true
console.log(array[5]); // false

 

๋ฐฐ์—ด์ด ์š”์†Œ์— ์ ‘๊ทผํ•˜์—ฌ ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.

 

array[0] = 0;
console.log(array[0]); // 0

 

โ€ป ๋ฐฐ์—ด๊ณผ undefined

์ผ๋ฐ˜์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ๋Š” ๋ฐฐ์—ด์˜ ๋ฒ”์œ„๋ฅผ ๋„˜๋Š” ์š”์†Œ์— ์ ‘๊ทผํ•  ๋•Œ 'Index out of range' ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€๋งŒ

JS์—์„œ๋Š” undefined๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.

 

let array = [1, 2, 3, 4, 5, 6]
console.log(array[1000]) // undefined

 

๐Ÿ“Œ while ๋ฐ˜๋ณต๋ฌธ

๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ, ๋ถˆ(Bool) ํ‘œํ˜„์‹์ด ์ฐธ์ธ ๋™์•ˆ์— ์ค‘๊ด„ํ˜ธ ์•ˆ์˜ ๋ฌธ์žฅ์„ ๊ณ„์† ์‹คํ–‰ํ•œ๋‹ค.

 

 

while (<๋ถˆ ํ‘œํ˜„์‹>) {
	// ๋ถˆ ํ‘œํ˜„์‹์ด ์ฐธ์ธ ๋™์•ˆ ์‹คํ–‰ํ•  ๋ฌธ์žฅ
}

 

๋ฌดํ•œ๋ฐ˜๋ณต ์ฃผ์˜!) ์กฐ๊ฑด์ด ๋ณ€ํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฌดํ•œ ๋ฐ˜๋ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ˜๋“œ์‹œ ์กฐ๊ฑด์„ false๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋ฌธ์žฅ์„ ํฌํ•จํ•ด์•ผ ํ•œ๋‹ค.

 

๐Ÿ“Œ for ๋ฐ˜๋ณต๋ฌธ

for ๋ฐ˜๋ณต๋ฌธ์€ ์›ํ•˜๋Š” ํšŸ์ˆ˜๋งŒํผ ๋ฐ˜๋ณตํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

for ๋ฐ˜๋ณต๋ฌธ์˜ ๊ฐ ๋‹จ๊ณ„๋ฅผ ์‚ดํŽด๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  1. ์ดˆ๊ธฐ์‹์„ ๋น„๊ตํ•œ๋‹ค.
  2. ์กฐ๊ฑด์‹์„ ๋น„๊ตํ•œ๋‹ค. ์กฐ๊ฑด์ด false์ด๋ฉด ๋ฐ˜๋ณต๋ฌธ์„ ์ข…๋ฃŒํ•œ๋‹ค.
  3. ๋ฌธ์žฅ์„ ์‹คํ–‰ํ•œ๋‹ค.
  4. ์ข…๊ฒฐ์‹์„ ์‹คํ–‰ํ•œ๋‹ค.
  5. 2๋‹จ๊ณ„๋กœ ์ด๋™ํ•œ๋‹ค.

 

for (let i = 0; i < [๋ฐ˜๋ณต ํšŸ์ˆ˜]; i++) {
	// ์‹คํ–‰ํ•  ๋ฌธ์žฅ
}

 

 

๐Ÿ“Œ ์—ญ for ๋ฐ˜๋ณต๋ฌธ

๋ฐฐ์—ด ๋ฐ˜๋ณต์„ ์•ž์—์„œ๋ถ€ํ„ฐ ์ˆ˜ํ–‰ํ•  ๋•Œ๋„ ์žˆ์ง€๋งŒ ๋’ค์—์„œ๋ถ€ํ„ฐ ์‹คํ–‰ํ•ด์•ผ ํ•  ๋•Œ๋„ ์žˆ๋‹ค.

์ด ๋•Œ๋Š” for ๋ฐ˜๋ณต๋ฌธ์„ ๋‹ค์Œ ํ˜•ํƒœ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

 

for (let i = length-1; i >= 0; i--) {
	// ์‹คํ–‰ํ•  ๋ฌธ์žฅ
}

// ์˜ˆ์‹œ
let array = [1, 2, 3, 4, 5, 6];

for (let i = array.length-1; i >=0; i--) {
	console.log(array[i]);
}

/*
6
5
4
3
2
1
*/

 

๐Ÿ“Œ for in ๋ฐ˜๋ณต๋ฌธ๊ณผ for of ๋ฐ˜๋ณต๋ฌธ

for in ๋ฐ˜๋ณต๋ฌธ๊ณผ for of ๋ฐ˜๋ณต๋ฌธ์€ ๊ฐ์ฒด์— ์‰ฝ๊ฒŒ ๋ฐ˜๋ณต๋ฌธ์„ ์ ์šฉํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

 

// for in ๋ฐ˜๋ณต๋ฌธ
for (let ์ธ๋ฑ์Šค in ๋ฐฐ์—ด) {

}

// for of ๋ฐ˜๋ณต๋ฌธ
for (let ์š”์†Œ of ๋ฐฐ์—ด) {

}

for in ๋ฐ˜๋ณต๋ฌธ๊ณผ for of ๋ฐ˜๋ณต๋ฌธ์€ for ๋ฐ˜๋ณต๋ฌธ ์‚ฌ์šฉ๊ณผ ์—ญํ• ์ด ๊ฐ™๋‹ค.

 

for (let i = 0; i < ๋ฐฐ์—ด.๊ธธ์ด; i++) {
	let ์ธ๋ฑ์Šค = i;
    let ์š”์†Œ = ๋ฐฐ์—ด[i];
}

 

โ€ป for in ๋ฐ˜๋ณต๋ฌธ๊ณผ for of ๋ฐ˜๋ณต๋ฌธ ์‚ฌ์šฉ ์˜ˆ์‹œ

 

let array = ["์‚ฌ๊ณผ", "๋ฐฐ", "ํฌ๋„", "๋”ธ๊ธฐ", "๋ฐ”๋‚˜๋‚˜"]

// for in ๋ฐ˜๋ณต๋ฌธ
for (let i in array) {
	console.log(`{i}๋ฒˆ์งธ ์š”์†Œ: ${array[i]}`);
}

console.log("----- ๊ตฌ๋ถ„์„  ----- ")

// for of ๋ฐ˜๋ณต๋ฌธ
for (let item of array) {
	console.log(item);
}

/*
0๋ฒˆ์งธ ์š”์†Œ: ์‚ฌ๊ณผ
1๋ฒˆ์งธ ์š”์†Œ: ๋ฐฐ
2๋ฒˆ์งธ ์š”์†Œ: ํฌ๋„
3๋ฒˆ์งธ ์š”์†Œ: ๋”ธ๊ธฐ
4๋ฒ„์งธ ์š”์†Œ: ๋ฐ”๋‚˜๋‚˜
----- ๊ตฌ๋ถ„์„  -----
์‚ฌ๊ณผ
๋ฐฐ
ํฌ๋„
๋”ธ๊ธฐ
๋ฐ”๋‚˜๋‚˜
*/

 

์ค‘์ฒฉ ๋ฐ˜๋ณต๋ฌธ์€ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์™€ ์‚ฌ์šฉ์ด ๋™์ผํ•˜๋‹ค. - for๋ฌธ ์•ˆ์— for๋ฌธ ...

 

โ€ป์ค‘์ฒฉ ๋ฐ˜๋ณต๋ฌธ ์˜ˆ์‹œ

 

for (let i = 0; i < 10; i++) {
	for (let j = 0; j < 10; j++) {
    
    }
}

 

๐Ÿ“Œ break ํ‚ค์›Œ๋“œ, continue ํ‚ค์›Œ๋“œ

break ํ‚ค์›Œ๋“œ๋Š” ์กฐ๊ฑด๋ฌธ์ด๋‚˜ ๋ฐ˜๋ณต๋ฌธ์„ ๋ฒ—์–ด๋‚  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

continue ํ‚ค์›Œ๋“œ๋Š” ๋ฐ˜๋ณต๋ฌธ ๋‚ด๋ถ€์—์„œ ํ˜„์žฌ ๋ฐ˜๋ณต์„ ๋ฉˆ์ถ”๊ณ  ๋‹ค์Œ ๋ฐ˜๋ณต์„ ์ง„ํ–‰ํ•˜๊ฒŒ ํ•œ๋‹ค.

 

// break ํ‚ค์›Œ๋“œ
let i = 0;
let array = [1, 31, 273, 57, 8, 11, 32];
let output;

while (true) {
	if array[i] % 2 === 0) {
    	output = array[i];
    	break;
    }
    i = i+1;
}

console.log(`์ฒ˜์Œ ๋ฐœ๊ฒฌํ•œ ์ง์ˆ˜๋Š” ${output}์ž…๋‹ˆ๋‹ค.`)
// ์ฒ˜์Œ ๋ฐœ๊ฒฌํ•œ ์ง์ˆ˜๋Š” 8์ž…๋‹ˆ๋‹ค.

// continue ํ‚ค์›Œ๋“œ
for (let i = 1; i < 10; i++) {
	if (i % 2 === 0) {
    	continue;
    }
    console.log(i)
}
/*
1
3
5
7
9
*/

 

๐Ÿ“Œ var ํ‚ค์›Œ๋“œ

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ์ผ๋ฐ˜์ ์œผ๋กœ ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค ๋•Œ let ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

ํ•˜์ง€๋งŒ ์ธํ„ฐ๋„ท ์ต์Šคํ”Œ๋กœ๋Ÿฌ์—์„œ๋Š” let ํ‚ค์›Œ๋“œ์™€ const ํ‚ค์›Œ๋“œ๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ var ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋‚Ÿ.

 

๋‘ ํ‚ค์›Œ๋“œ์˜ ์ฐจ์ด์ ์€ '๋ณ€์ˆ˜์˜ ์Šค์ฝ”ํ”„'๋‹ค. 

let ํ‚ค์›Œ๋“œ : ์ƒ์„ฑํ•œ ๋ณ€์ˆ˜๋Š” ํ•ด๋‹น ๋ธ”๋ก ๋‚ด๋ถ€์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

var ํ‚ค์›Œ๋“œ : ์ƒ์„ฑํ•œ ๋ณ€์ˆ˜ ๋ชจ๋“  ๊ณณ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

// let ํ‚ค์›Œ๋“œ
{
	let a = 10;
}
console.log(a);

// ReferenceError: a is not defined

/* ------------------------------------- */

// var ํ‚ค์›Œ๋“œ
{
	var a = 10;
}
console.log(a);

// 10

์ฐธ๊ณ ๋„์„œ

  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ž…๋ฌธ
  • ์‹ค๋ฌด์— ๋ฐ”๋กœ ์ ์šฉํ•˜๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ ๋ ˆ์‹œํ”ผ 278

๋Œ“๊ธ€