๐Ÿ”— [JavaScript] for, foreach ๋น„๊ต

JiHun Songยท2022๋…„ 9์›” 27์ผ
0
post-thumbnail

์„œ๋ก 

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ด์šฉํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ด์šฉํ•˜๋ฉด์„œ ํ—ท๊ฐˆ๋ ธ๋˜ ๋ฐ˜๋ณต๋ฌธ์— ๋Œ€ํ•ด์„œ ์ •๋ฆฌํ•œ๋‹ค.

iterable

iterable์€ ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด(iterable object)์„ ์ค„์—ฌ๋„ ๋ถ€๋ฅด๋Š” ๋ช…์นญ์ž…๋‹ˆ๋‹ค.
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ iterable ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด๋‚ด๋Š” ์ƒ์„ฑ์ž๋Š” string Array, TypedArray, Map, Set ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

for...of

  • for...of๋Š” ES6์— ์ถ”๊ฐ€๋œ๋ฐ˜๋ณต๋ฌธ ์ž…๋‹ˆ๋‹ค.
  • ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด(iterable)๋ฅผ ์ˆœํšŒ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.
  • ์ˆœํšŒํ•˜๋ฉด์„œ ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ด์ค๋‹ˆ๋‹ค.
  • Object๋Š” ๋ถˆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
for(let value of ['a', 'b', 'c']) {
  	console.log(value); // 'a', 'b', 'c'
}

for...in

  • Iterable object์ด๋ฉด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • key๋ฅผ ๋ฐ˜ํ™˜ํ•ด์ค๋‹ˆ๋‹ค.
  • ๋ฐฐ์—ด๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.(index๋ฅผ ๋ฐ˜ํ™˜)
const obj = {name : 'song', age : 1};
for(let key in obj) {
  	console.log(key); // 'name', 'age'
  	console.log(obj[key]); // 'song', 1
}

foreach

  • return break continue๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฃจํ”„๋ฅผ ์ œ์–ด ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • ๋ฃจํ”„๋ฅผ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ํ†ตํ•ด์„œ throw ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.
 // ๋ฃจํ”„์ œ์–ด ์ž˜๋ชป๋œ ์ฝ”๋“œ
 const arr = [1,2,3,4,5];
 
 arr.forEach((value) => {
 	if(value == 3) 
      return;
    console.log(value);
 });
//๋ฃจํ”„์ œ์–ด ์˜ณ๋ฐ”๋ฅธ ์ฝ”๋“œ
const arr = [1,2,3,4,5];
try{
  arr.forEach(function(value){ 
    if(value==3)
      throw new Error("stop loop"); 
    console.log(value);
  })
}catch(e){
 
}
 

์ •๋ฆฌ

for ...of// ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด ์ˆœํ™˜

for ...in // ๊ฐ์ฒด ์ˆœํ™˜

foreach // return, break, continue ๋ถˆ๊ฐ€

profile
ํด๋ฆฐ์ฝ”๋“œ๋ฅผ ์ข‹์•„ํ•˜๋Š” ๊ฐœ๋ฐœ์ž

0๊ฐœ์˜ ๋Œ“๊ธ€