ํฐ์คํ ๋ฆฌ ๋ทฐ
for ... of ๊ตฌ๋ฌธ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค. ๊ธฐ๋ณธ์ ์ธ MDN์ ์ ์๋ ์ด๋ฌํฉ๋๋ค.
for...of
๋ฌธ(statement)์ ๋ฐ๋ณต๊ฐ๋ฅํ ๊ฐ์ฒด (Array
, Map
, Set
, String
, TypedArray
, arguments ๊ฐ์ฒด ๋ฑ์ ํฌํจ)์ ๋ํด์ ๋ฐ๋ณตํ๊ณ ๊ฐ ๊ฐ๋ณ ์์ฑ๊ฐ์ ๋ํด ์คํ๋๋ ๋ฌธ์ด ์๋ ์ฌ์ฉ์ ์ ์ ๋ฐ๋ณต ํํฌ๋ฅผ ํธ์ถํ๋ ๋ฃจํ๋ฅผ ์์ฑํฉ๋๋ค.
๋ณดํต for ...of๋ฌธ์ for ...in๋ฌธ๊ณผ ๋น๊ต๋ฅผ ํ๊ณค ํ๋๋ฐ ์ค์ํ ์ฐจ์ด์ ํ๋๋ง ์ง๊ณ ๋์ด๊ฐ๊ฒ ์ต๋๋ค.
let info = { 'name' : 'Lee', 'age' : 28, 'sex' : 'm' } for(let i in info){ console.log(i); //name age sex } for(let i of info) { console.log(i); //TypeError: info is not iterable }
for in๋ฌธ์ ๋ฐ๋ณต ๊ฐ๋ฅํ ์์ฑ์ ๊ฐ์ฒด๊ฐ ์๋์ง๋ผ๋ ๋ชจ๋ ์ด๊ฑฐ ๊ฐ๋ฅํ ์์ฑ์ ๊ฐ์ง ๊ฐ์ฒด์ ๋ํด ๋ฐ๋ณต์ด ๊ฐ๋ฅํฉ๋๋ค. ํ์ง๋ง for...of ๊ตฌ๋ฌธ์ [Symbol.iterator] ์์ฑ์ ๊ฐ์ง๋ ์ปฌ๋ ์ ๋ง์ด ์ฌ์ฉ ๊ฐ๋ฅํ ๊ตฌ๋ฌธ์ ๋๋ค. ์๋ฌ์์๋ not iterable ์ด๋ผ๊ณ ํด์ ๋ฐ๋ณต์ด ๋ถ๊ฐ๋ฅํ๋ค๋ผ๊ณ ์๋ ค์ฃผ๊ณ ์์ฃ . Symbol์ ES6์์ ๋ฑ์ฅํ ์๋ฃํ์ผ๋ก ์์ง ํฌ์คํ ํ์ง๋ ์์๋๋ฐ ์์ฒญ ์ค์ํ๊ฒ ์๊ฐํ์ง ์์ผ์ ๋ ๋๊ฒ ์ต๋๋ค.
let str = "korea"; for(let i in str) { console.log(i)} //0 1 2 3 4 for(let i of str) { console.log(i)} //k o r e a
MDN์ ์ ์์์๋ ๋งํ๋ค์ํผ for...of๋ฌธ์ ๋ฐ๋ณต๊ฐ๋ฅํ ๊ฐ์ฒด์ ๋ํด์ ์คํ๋๋ ๋ฐ๋ณต๋ฌธ์ด๋ฉด์ ๊ฐ๋ณ ์์ฑ๊ฐ์ ๋ํด ์คํ๋๋ ๊ตฌ๋ฌธ์ ๋๋ค. ๊ทธ์๋ฐํด for in์ ๊ฐ์ด ์๋ key ์ ์ด์ ์ ๋ง์ถ๊ณ ์์ฃ .
๋ฐ๋ณต ๊ฐ๋ฅํ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ค๋ ๋ถ๋ถ์์ ๋ ํ๋์ ์์๋ฅผ ๋ณด๊ฒ ์ต๋๋ค.
let iterable = [3,5,7]; iterable.notIterable = "not iterable"; for(let i in iterable){ console.log(i); //0 1 2 notIterable } for(let i of iterable){ console.log(i); //3 5 7 }
๋ณด์๋ค์ํผ iterable ๊ฐ์ฒด์ notIterable ํค๋ฅผ ๊ฐ์ง๋ ๊ฐ์ฒด๋ฅผ ํ๋ ์ถ๊ฐํ์ต๋๋ค. ๊ทผ๋ฐ for in๋ฌธ์์๋ key๊ฐ ์ถ๋ ฅ์ด ๋์๋๋ฐ for of ๋ฌธ์์๋ ํค ๊ฐ์ด ์ถ๋ ฅ์ด ์๋๋ค๋ ๊ฒ์ {"notIterable : "not iterable" } ํํ๋ก ์ถ๊ฐ๋ ์ด ๊ฐ์ฒด๋ iterableํ ๊ฐ์ฒด๊ฐ ์๋๋ผ๋ ๋ป์ ๋๋ค. ์ฒ ์ ํ๊ฒ iterable ๊ฐ๋ฅํ ๊ฐ์ฒด์ ๋ํด์๋ง ๊ฐ์ ์ถ๋ ฅํ๊ณ ์๋ ๊ฒ์ ๋ณผ ์ ์์ฃ .
'javascript > ๋ชจ๋ ์๋ฐ์คํฌ๋ฆฝํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[javascript] - Promise bulk๋ก ์ฒ๋ฆฌํ๊ธฐ (0) | 2023.02.10 |
---|---|
9. generators (0) | 2019.01.22 |
7. let + const (0) | 2019.01.06 |
6. default + rest + spread (0) | 2019.01.03 |
5. destructuring (0) | 2018.12.31 |
- Total
- Today
- Yesterday
- Spring
- ๋น๋๊ธฐ ์์ฒญ
- NestJS
- Request_Limit_Exceeded
- typeorm
- nestjs directory
- Spring Async
- nestjs project
- sequelize
- JavaScript
- node.js backend
- nestjs/cli
- backend-framework
- Promise bulk
- node.js
- Promise error
- @nestjs/config
- nestjs doc
- nestjs typeorm
- ๊ธฐ์์ฒญAPI
- nestjs module
- android
- nestjs config
- nestjs configService
- ํ๋ก๊ทธ๋๋จธ์ค
- typeorm ์ฐ๊ฒฐ
- docker mysql
- foreignkey
- ์๊ณ ๋ฆฌ์ฆ
- DeferredResult
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |