์์์๋ฃํ - String, Number, Bigint, Boolean,
undefined
, Symbol, (null
)
์ฐธ์กฐ์๋ฃํ - Array([]
), Object({}
), Function(function(){}
)
- Global Scope vs. Local Scope
- Block Scope vs. Function Scope
- ์ ์ญ๋ณ์์ window ๊ฐ์ฒด
- ์ ์ธ์์ด ์ด๊ธฐํ๋ ์ ์ญ๋ณ์ โก Strict Mode๋ฅผ ์ฌ์ฉํ์.
let | const | var | |
---|---|---|---|
์ ํจ๋ฒ์ | Block Scope | Block Scope | Function Scope |
์ฌํ ๋น | โญ | โ | โญ |
์ฌ์ ์ธ | โ | โ | โญ |
Object.keys()
๊ฐ์ฒด๊ฐ ๊ฐ์ง๊ณ ์๋ key๋ค์ ๋ชฉ๋ก์ ๋ฐฐ์ด๋ก ๋ฆฌํดํ๋ ๋ฉ์๋
๊ฐ์ฒด์ ๋ด์ฅ ๋ฉ์๋๊ฐ ์๋ ๊ฐ์ฒด ์์ฑ์์ธ Object๊ฐ ์ง์ ๊ฐ์ง๊ณ ์๋ ๋ฉ์๋์ด๋ค.
Object.values()
๊ฐ์ฒด์ value๊ฐ๋ค์ ๋ชฉ๋ก์ ๋ฐฐ์ด๋ก ๋ฆฌํดํ๋ ๋ฉ์๋
Object.entries(obj)
ํค์ ๊ฐ์ ์์ผ๋ก ์ด๋ฃจ์ด์ง ๊ธธ์ด 2์ง๋ฆฌ ๋ฐฐ์ด์ ๋ฆฌํดํ๋ ๋ฉ์๋
์ด์ค๋ฐฐ์ด์ด ๋ฆฌํด๋๋ค.
๊ฐ์ฒด์ ์๋ก์ด ํค-๊ฐ ์์ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ
let obj = {}; // ์ฌ๊ธฐ์ key๊ฐ 'age'์ด๊ณ value๊ฐ 21์ธ ํ๋กํผํฐ๋ฅผ ์ถ๊ฐํ๊ณ ์ถ๋ค๋ฉด ์ด๋ ๊ฒ ํ๋ฉด ๋๋ค. obj.age = 21;
- ์์ ๊ฐ์ Dot notation์ ์ฌ์ฉํ ๋ฐฉ๋ฒ์ key๊ฐ์ด ์ ์ ์ธ ๊ฒฝ์ฐ์๋ง ๊ฐ๋ฅํ๋ค. key๊ฐ ๋์ ์ผ ๋๋ ์๋์ฒ๋ผ Braket notation์ ์ฌ์ฉํ ๋ฐฉ๋ฒ์ ์จ์ผ ํ๋ค.
let obj1 = { apple: 3, orange: 5, mango: 2 }; let obj2 = { apple: 2, peach: 7 }; // obj2์์ obj1์ ์๋ ํ๋กํผํฐ๋ง ๊ณจ๋ผ์ obj1์ ์ถ๊ฐํด์ฃผ์ for (let prop in obj2) { if (!obj1[prop]) { obj1[prop] = obj2[prop]; } }
๋ง์ง๋ง์ console.log(i); // --> 5 ์ธ ์ด์
for๋ฌธ ์์์console.log(i); // -->4
๋ฅผ ํ ์ดํ์ ์ฆ๊ฐ๋ฌธ์ ํ๋ฒ ๋ ๊ฑฐ์น๊ธฐ ๋๋ฌธ์ 5๋ก ์ถ๋ ฅ๋๋ค.
๐ฆ ๋ด๊ฐ ์ฌ์ฉํ ์ฝ๋(๐)๋ ์ด๋ ๊ฒ(๐)๋ ํํํ ์ ์๋ค.
!arr.length
===arr.length === 0
!obj1[key]
===!(key in obj1)
Q. ํจ์๊ฐ ์คํ๋ ํ, ์ฝ์์ ์ถ๋ ฅ๋๋ args์ ๊ฐ์ ๋ฌด์์ผ๊น์?
function printMaxNums(...args) {
console.log(args)
}
printMaxNums(10, 30, 40); // --> [10, 30, 40]
...args
๋ rest parameter, rest syntax๋ผ๊ณ ๋ถ๋ฆ ๋๋ค. ๋จ์์๋ ๋ชจ๋ ์ธ์๋ฅผ ํ๋์ ๋ฐฐ์ด์ ๋ด๊ธฐ ๋๋ฌธ์ ์ด๋ ๊ฒ ๋ถ๋ฆ ๋๋ค.
Line 3 : printMaxNums(10, 30, 40)
ํจ์ printMaxNums์ ์ธ์๋ ์ด 3๊ฐ์ ๋๋ค. ์ด ์ธ์๋ฅผ ๋ชจ๋ ํจ์ printMaxNums์ ์ ๋ฌํ์ฌ ์คํํฉ๋๋ค.function printMaxNums(...args) { console.log(args) }
์คํ์ด ๋๋ฉด rest parameter args๋ ๋ชจ๋ ๋จ์์๋ ์ธ์๋ฅผ ํ ๋น๋ฐ์ต๋๋ค. ๋ฐ๋ก ๋งค๊ฐ๋ณ์๋ฅผ ๋บด๋์ง ์์์์ผ๋ก args๋ ๋ฐฐ์ด์ ํํ๋ก ๋ชจ๋ ์ธ์๋ฅผ ํ ๋น๋ฐ์ต๋๋ค. ๊ทธ๋ ๊ฒ ๋๋ฌธ์ ๋ต์ [10, 30, 40], A์ ๋๋ค.
function printMaxNums(num1, ...args) { console.log(args) // [30, 40] }
๋ฐ๋ก ๋งค๊ฐ๋ณ์๋ฅผ ์ง์ ํ์๋ค๋ฉด, ๋จ์ ๋งค๊ฐ๋ณ์๋ง ๋ฐฐ์ด์ ํํ๋ก rest parameter args์ ํ ๋นํฉ๋๋ค.
Q. ๋ค์์ ์ฝ๋๋ฅผ ์คํ์ํจ ํ์ result ์ ๊ฐ์ ๋ฌด์์ด ๋ ๊น์?
let x = 10;
function outer () {
let x = 20;
function inner () {
x = x + 10;
return x;
}
inner();
}
outer();
let result = x; // --> ๋ด๊ฐ ๊ณ ๋ฅธ ์ค๋ต: 30. ์ ๋ต: 10
outer
ํจ์๋ฅผ ์คํํ๋ฉด,outer
ํจ์ ์ค์ฝํ ๋ด์์inner
ํจ์๊ฐ ํธ์ถ๋ฉ๋๋ค.
inner
๋ ๋ณ์x
์ ๊ฐ์10
์ ๋ํ๋ ํจ์์ ๋๋ค. ์ด ๋,inner
์ ์ํด ๊ฐ์ด ๋ณ๊ฒฝ๋๋x
๋inner
์ ๋ฐ๋ก ํ ๋จ๊ณ ์ ์ค์ฝํ์ธouter
์ ์ํx
์ ๋๋ค. ์ฆinner
๊ฐ ์คํ๋๋ฉด์,outer
ํจ์ ์ค์ฝํ์ ๋ณ์x
๊ฐ์ด30
์ผ๋ก ๋ฐ๋๋๋ค.
ํ์ง๋ง ๋ณ์result
์ ํ ๋น๋ ๊ฐ์ ์ ์ญ ์ค์ฝํ์x
์ด๋ฏ๋ก,outer
ํจ์๊ฐ ํธ์ถ๋์ด๋ ์๋ฌด๋ฐ ์ํฅ์ ๋ฐ์ง ์์ต๋๋ค.