all is well!!
11. ํ์ ๋ณํ๊ณผ ๋จ์ถ ํ๊ฐ ๋ณธ๋ฌธ
๐ ํ์ ๋ณํ ?
JS์๋ ๋ชจ๋ ๊ฐ์ ํ์ ์ด ์๋ค.
๊ทธ๋ฆฌ๊ณ JS๋ ๋ค๋ฅธ ํ์ ์ผ๋ก ๋ณํํ ์ ์๋๋ฐ,
1. ๊ฐ๋ฐ์์ ์๋์ ๋ฐ๋ผ ๋ค๋ฅธ ํ์ ์ผ๋ก ๋ณํํ๋ ๋ช ์์ ํ์ ๋ณํ
2. ํํ์์ ํ๊ฐํ๋ ๋์ค JS ์์ง์ ์ํด ์๋ฌต์ ์ผ๋ก ํ์ ์ด ์๋๋ณํํ๋ ์๋ฌต์ ํ์ ๋ณํ์ด ์๋ค.
ํท๊ฐ๋ฆฌ๋ฉด ์๋๋ ์ !
์ด๋ฐ ํ์ ๋ณํ์ด ๊ธฐ์กด ์์๊ฐ์ ์ง์ ๋ณ๊ฒฝํ๋ ๊ฒ์ ์๋๋ค.
ํ์ ๋ณํ์ ๊ธฐ์กด ์์๊ฐ์ ์ด์ฉํด ๋ค๋ฅธ ํ์ ์ ์๋ก์ด ์์ ๊ฐ์ ์์ฑํ๋๊ฒ.
var x = 10;
var str = x + '';
console.log(typeof str, str); // string 10
console.log(typeof x, x); // number 10
์๋ฌต์ ํ์ ๋ณํ์ JS์์ง์ ์ํด ํํ์์ ์๋ฌ์์ด ํ๊ฐํ๊ธฐ ์ํด
ํผ์ฐ์ฐ์์ ๊ฐ์ ์๋ฌต์ ํ์ ๋ณํ์ ํด ๋จ ํ๋ฒ ์ฌ์ฉํ๊ณ ๋ฒ๋ฆฐ๋ค.
ํ์ ๋ณํ์
1. ์๋ฌต์ ํ์ ๋ณํ์ด ๋๋์ง
2. ๋ฐ์ํ๋ค๋ฉด ์ด๋ค ํ์ ์ด๋ค ๊ฐ์ผ๋ก ๋ณํ๋๋์ง
3. ํ์ ๋ณํ๋ ๊ฐ์ผ๋ก ํํ์์ด ์ด๋ป๊ฒ ํ๊ฐ๋๋์ง
์์ฑํ ๊ฐ๋ฐ์๊ฐ ์์ธก ๊ฐ๋ฅํด์ผํ๋ค.
๊ทธ๋ฆฌ๊ณ ๋๋ก๋ ์๋ฌต์ ํ์ ๋ณํ์ด ๊ฐ๋ ์ฑ ์ธก๋ฉด์์ ๋ ์ข์ ์ ์๋ค.
1. (10).toString();
2. 10 + '';
2๋ฒ์ด ์ข๋ ๊ฐ๊ฒฐํ๊ณ ํ์ ์ด ๋ณํํ๊ฒ ๊ตฌ๋ ์ถ์ธกํ๊ธฐ๊ฐ ์ฝ๋ค.
๐ ์๋ฌต์ ํ์ ๋ณํ
ํํ์์ ํ๊ฐํ๋ ๋์ค JS ์์ง์ ์ํด ์๋ฌต์ ์ผ๋ก ํ์ ์ด ์๋๋ณํ ํ๋๊ฒ.
์๋ฌต์ ํ์ ๋ณํ์ ์์ ํ์ ์ค ํ๋๋ก ์๋๋ณํํ๋ค.
1. ๋ฌธ์์ด
2. ์ซ์
3. ๋ถ๋ฆฌ์ธ
.
.
๐ฃ ๋ฌธ์์ด ํ์ ์ผ๋ก ๋ณํ
1 + '2' // "12"
๋ฌธ์์ด ์ฐ๊ฒฐ ์ฐ์ฐ์ (+) ์ ์ญํ ์ '๋ฌธ์์ด ๊ฐ'์ ๋ง๋๋ ๊ฒ์ด๋ค.
๊ทธ๋์ ์ฝ๋์ ๋ฌธ๋งฅ์ ๋ชจ๋ ๋ฌธ์์ด ํ์ ์ด์ฌ์ผ ํ๊ธฐ ๋๋ฌธ์
JS์์ง์ ์๋ฌ๋ฅผ ์ผ์ผํค์ง ์๊ธฐ ์ํด ์ซ์ํ์ ์ 1์ ๋ฌธ์ํ์ ์ผ๋ก ๋ณ๊ฒฝํ๋ค.
ํ ํ๋ฆฟ ๋ฆฌํฐ๋ด ํํ์ ์ฝ์ ์ ํํ์์ ํ๊ณผ ๊ฒฐ๊ณผ๋ฅผ ๋ฌธ์์ด ํ์ ์ผ๋ก
์๋ฌต์ ํ์ ๋ณํํ๋ค.
`1 + 1 = ${1 + 1}` // "1 + 1 = 2"
* ๋ค์ํ ๋ฌธ์์ด ์๋ ํ์ ์ ๋ฌธ์์ด ํ์ ์ผ๋ก ์๋ฌต์ ํ์ ๋ณํ์ ์ํํ๋ ์์๋ค
๐ฃ ์ซ์ ํ์ ์ผ๋ก ๋ณํ
1 - '1' // 0
2 * '10' // 10
1 / 'one' // NaN
์ฐ์ ์ฐ์ฐ์์ ์ญํ ์ ์ซ์ ๊ฐ์ ๋ง๋๋ ๊ฒ์ด๋ค.
์ฐ์ ์ฐ์ฐ์์ ๋ชจ๋ ํผ์ฐ์ฐ์๋ ์ฝ๋ ๋ฌธ๋งฅ์ ๋ชจ๋ ์ซ์ ํ์ ์ด์ด์ผ ํ๋ค.
์์ ์์์ฒ๋ผ ํผ์ฐ์ฐ์๋ฅผ ์ซ์ ํ์ ์ผ๋ก ๋ณํํ ์ ์์๋์ ๊ฒฐ๊ณผ๋ NaN์ด ๋๋ค.
๋น๊ต ์ฐ์ฐ์์๋ ์ซ์ํ์ ์ผ๋ก ๋ณํํ ๋๊ฐ ์๋ค.
'1' > 0 // true
๋น๊ต ์ฐ์ฐ์์ ์ญํ ์ ๋ถ๋ฆฌ์ธ ๊ฐ์ ๋ง๋๋ ๊ฒ์ด๋ค.
> ๋น๊ต ์ฐ์ฐ์๋ ํผ์ฐ์ฐ์์ ํฌ๊ธฐ๋ฅผ ๋น๊ตํด์ผ ํด์
๋ชจ๋ ํผ์ฐ์ฐ์๋ค์ ์ฝ๋ ๋ฌธ๋งฅ์ ๋ชจ๋ ์ซ์ ํ์ ์ผ๋ก ๋ณํ๋๋ค.
๋น ๋ฌธ์์ด, ๋น ๋ฐฐ์ด, null, false๋ 0์ผ๋ก true๋ 1๋ก ๋ณํ๋๋ค.
๊ฐ์ฒด์ ๋น ๋ฐฐ์ด์ด ์๋ ๋ฐฐ์ด ๊ทธ๋ฆฌ๊ณ undefined๋ ๋ณํ๋์ง ์์ NaN์ด ๋๊ธฐ๋๋ฌธ์ ์ฃผ์ํด์ผํ๋ค.
* ๋ค์ํ ์ซ์๊ฐ ์๋ ํ์ ์ ์ซ์ ํ์ ์ผ๋ก ์๋ฌต์ ํ์ ๋ณํ์ ์ํํ๋ ์์๋ค
๐ฃ ๋ถ๋ฆฌ์ธ ํ์ ์ผ๋ก ๋ณํ
if('') console.log(x);
์ ์ด๋ฌธ ๋๋ ์ผํญ ์กฐ๊ฑด ์ฐ์ฐ์์ ์กฐ๊ฑด์์ ๋ถ๋ฆฌ์ธ ๊ฐ์ผ๋ก ํ๊ฐ๋์ด์ผ ํ๋ค.
JS์์ง์ ๋ถ๋ฆฌ์ธ ํ์ ์ด ์๋ ๊ฐ์ Truthy(์ฐธ์ผ๋ก ํ๊ฐ๋๋ ๊ฐ) ๋๋ Falsy(๊ฑฐ์ง์ผ๋ก ํ๊ฐ๋๋ ๊ฐ)์ผ๋ก ๊ตฌ๋ถํ๋ค.
* Falsy๋ก ์ฒ๋ฆฌ๋๋ ๊ฐ๋ค
1. false
2. undefined
3. null
4. 0, -0
5. NaN
6. '' (๋น ๋ฌธ์์ด)
์์ Falsy๊ฐ ์ด์ธ์ ๋ชจ๋ ๊ฐ์ ๋ชจ๋ true๋ก ํ๊ฐ๋๋ Truthy๊ฐ์ด ๋๋ค.
๐ ๋ช ์์ ํ์ ๋ณํ
๐ฃ ๋ช ์์ ์ผ๋ก ํ์ ๋ณ๊ฒฝํ๋ ๋ฐฉ๋ฒ
1. ํ์ค ๋นํธ์ธ ์์ฑ์ ํจ์(String, Number, Boolean)๋ฅผ new ์ฐ์ฐ์ ์์ด ํธ์ถํ๋ ๋ฐฉ๋ฒ
2. ๋นํธ์ธ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
3. ์๋ฌต์ ํ์ ๋ณํ์ ์ด์ฉํ๋ ๋ฐฉ๋ฒ
๐ฃ ๋ฌธ์์ด ํ์ ์ผ๋ก ๋ณํํ๋ ๋ฐฉ๋ฒ
1. String ์์ฑ์ ํจ์๋ฅผ new ์ฐ์ฐ์ ์์ด ํธ์ถ
2. object.prototype.toString ๋ฉ์๋๋ฅผ ์ฌ์ฉ
3. ๋ฌธ์์ด ์ฐ๊ฒฐ ์ฐ์ฐ์๋ฅผ ์ด์ฉ
๐ฃ ์ซ์ ํ์ ์ผ๋ก ๋ณํํ๋ ๋ฐฉ๋ฒ
1. Number ์์ฑ์ ํจ์๋ฅผ new ์ฐ์ฐ์ ์์ด ํธ์ถ
2. parseInt, parseFloat ํจ์๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ(๋ฌธ์์ด๋ง ์ซ์ ํ์ ์ผ๋ก ๋ณํ ๊ฐ๋ฅ)
3. + ๋จํญ ์ฐ์ ์ฐ์ฐ์ ์ด์ฉ
4. * ์ฐ์ ์ฐ์ฐ์ ์ด์ฉ
๐ฃ ๋ถ๋ฆฌ์ธ ํ์ ์ผ๋ก ๋ณํํ๋ ๋ฐฉ๋ฒ
1. Boolean ์์ฑ์ ํจ์๋ฅผ new ์ฐ์ฐ์ ์์ด ํธ์ถ
2. ! ๋ถ์ ๋ ผ๋ฆฌ ์ฐ์ฐ์๋ฅผ ๋ ๋ฒ ์ฌ์ฉ
๐ ๋จ์ถ ํ๊ฐ
ํํ์์ ํ๊ฐํ๋ ๋์ค ํ๊ฐ ๊ฒฐ๊ณผ๊ฐ ํ์ ๋ ๊ฒฝ์ฐ ๋๋จธ์ง ํ๊ฐ ๊ณผ์ ์ ์๋ต ํ๋ ๊ฒ.
๋จ์ถํ๊ฐ๋ ํ์ ๋ณํํ์ง ์๊ณ ๊ทธ๋๋ก ๋ฐํํ๋ค.
๐ฃ ๋ ผ๋ฆฌ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ ๋จ์ถ ํ๊ฐ
๋ณดํต ๋ ผ๋ฆฌํฉ(or - ||) ๋๋ ๋ ผ๋ฆฌ๊ณฑ(and - &&) ์ฐ์ฐ์์ ํ๊ฐ ๊ฒฐ๊ณผ๋ ๋ถ๋ฆฌ์ธ ๊ฐ์ด์๋ค.
ํ์ง๋ง ๋จ์ถ ํ๊ฐ๋์๋ ๋ถ๋ฆฌ์ธ ๊ฐ์ด ์๋ ํผ์ฐ์ฐ์์ ์ด๋ ํ์ชฝ์ผ๋ก ํ๊ฐ๋๋ค.
1. ๋ ผ๋ฆฌ๊ณฑ(and - &&) ์ฐ์ฐ์๋ ํผ์ฐ์ฐ์ ์ ๋ถ true๋ก ํ๊ฐ๋์ด์ผ true๋ฅผ ๋ฐํํ๋ค.
'cat' && 'dog' // 'dog'
// ์ผ์ชฝ --> ์ค๋ฅธ์ชฝ์ผ๋ก ํ๊ฐ
cat์ ๋ฌธ์์ด์ด๊ธฐ ๋๋ฌธ์ Truthyํ ๊ฐ์ผ๋ก true๋ก ํ๊ฐ๋๋ค.
์ฌ๊ธฐ์ ๋ฉ์ถ์ง ์๊ณ ๋๊ฐ์ง๋ค true์ธ์ง ํ์ธํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ค๋ฅธ์ชฝ ํผ์ฐ์ฐ์๋ก ์ด๋ํด ๋ ํ๊ฐ๋ฅผ ํ๋ค.
dog๋ ๋ฌธ์์ด์ด๊ธฐ ๋๋ฌธ์ Truthyํ ๊ฐ์ผ๋ก true๋ก ํ๊ฐ๋๋ค.
์ด๋ ๊ฒ ๋๊ฐ์ง๊ฐ Truthyํ ๊ฐ์ผ๋ก true๋ก ํ๊ฐ๋๊ธฐ ๋๋ฌธ์
๋ ผ๋ฆฌ ์ฐ์ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๊ฒฐ์ ํ๋ ๋ ๋ฒ์งธ ํผ์ฐ์ฐ์์ธ dog๋ฅผ ๊ทธ๋๋ก ๋ฐํํ๋ค.
2. ๋ ผ๋ฆฌํฉ(or - ||) ์ฐ์ฐ์๋ ๋ ๊ฐ์ ํผ์ฐ์ฐ์์ค ํ๊ฐ๋ง true๋ก ํ๊ฐ๋์ด๋ true๋ฅผ ๋ฐํํ๋ค.
'cat' || 'dog' // 'cat'
// ์ผ์ชฝ --> ์ค๋ฅธ์ชฝ์ผ๋ก ํ๊ฐ
cat์ ๋ฌธ์์ด์ด๊ธฐ ๋๋ฌธ์ Truthyํ ๊ฐ์ผ๋ก true๋ก ํ๊ฐ๋๋ค.
๋ ผ๋ฆฌํฉ ์ฐ์ฐ์๋ ๋์ค ํ๋๋ง true๋ก ํ๊ฐ๋์ด๋ ๋๊ธฐ ๋๋ฌธ์ ์ผ์ชฝ์ด true๋ก ํ๊ฐ๋๋ฉด
์ค๋ฅธ์ชฝ ํผ์ฐ์ฐ์๋ก ์ด๋ํ์ง์๊ณ ๋ฐ๋ก cat ๊ทธ๋๋ก ๋ฐํํ๋ค.
* * ๋จ์ถ ํ๊ฐ์ ๊ท์น **
๋ ผ๋ฆฌ๊ณฑ(and - &&)์ผ๋ก if๋ฌธ ๋์ฒดํ๊ธฐ
var done = true;
ver message = '';
// ํผ์ฐ์ฐ์๊ฐ ์ ๋ถ true์ด๊ธฐ ๋๋ฌธ์ ์ค๋ฅธ์ชฝ '์๋ฃ'๋ฅผ ๋ฐํ
message = done && '์๋ฃ';
console.log(message); // ์๋ฃ
๋ ผ๋ฆฌํฉ(or - ||)์ผ๋ก if๋ฌธ์ ๋์ฒดํ๊ธฐ
var done = false;
ver message = '';
// ํผ์ฐ์ฐ์ ์ค๋ฅธ์ชฝ๋ง true์ด๊ธฐ ๋๋ฌธ์ ์ค๋ฅธ์ชฝ '๋ฏธ์๋ฃ'๋ฅผ ๋ฐํ
message = done || '๋ฏธ์๋ฃ';
console.log(message); // ๋ฏธ์๋ฃ
๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํค๊ธฐ๋ฅผ ๊ธฐ๋ํ๋ ๋ณ์๊ฐ null ๋๋ undefined๊ฐ ์๋์ง ํ์ธํ๊ณ ํ๋กํผํฐ๋ฅผ ์ฐธ์กฐํ ๋
๊ฐ์ฒด๋ ํค์ ๊ฐ์ผ๋ก ๊ตฌ์ฑ๋ ํ๋กํผํฐ(์์ฑ)์ ์งํฉ.
๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํค๊ธฐ๋ฅผ ๊ธฐ๋ํ๋ ๋ณ์์ ๊ฐ์ด null๋๋ undefined์ผ ๊ฒฝ์ฐ ํ์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ค.
var elem = null;
var value = elem.value; // ํ์
์๋ฌ!
์๋ฌ๊ฐ ๋ฐ์ํ๋ฉด ํ๋ก๊ทธ๋จ์ด ๊ฐ์ ์ข ๋ฃ๋๊ธฐ ๋๋ฌธ์ ์ด๋ ๋จ์ถ ํ๊ฐ๋ฅผ ์ฌ์ฉํ๋ค.
var elem = null;
var value = elem && elem.value; // null
elem์ด Falsy ๊ฐ์ด๋ฉด elem์ผ๋ก ํ๊ฐ๋๊ณ
๋ฐ๋๋ก Truthy ๊ฐ์ด๋ฉด elem.value๋ก ํ๊ฐ๋๋ค.
ํจ์ ๋งค๊ฐ๋ณ์์ ๊ธฐ๋ณธ๊ฐ ์ค์ ํ ๋
ํจ์ ํธ์ถํ ๋ ์ธ์๋ฅผ ์ ๋ฌํ์ง ์์ผ๋ฉด ๋งค๊ฐ๋ณ์๋ undefined๊ฐ ํ ๋น๋๋ค.
๋จ์ถ ํ๊ฐ๋ฅผ ์ฌ์ฉํด์ ๋งค๊ฐ๋ณ์์ ๊ธฐ๋ณธ๊ฐ์ ์ค์ ํ๋ฉด undefined๋ก ์ธํด ๋ฐ์ํ ์ ์๋ ์๋ฌ๋ฅผ ๋ฐฉ์งํ๋ค.
๐ฃ ์ต์ ๋ ์ฒด์ด๋ ์ฐ์ฐ์ - ?.
ES11 ๋ฌธ๋ฒ ์ต์ ๋ ์ฒด์ด๋ ์ฐ์ฐ์ ?.๋
์ขํญ์ ํผ์ฐ์ฐ์๊ฐ null ๋๋ undefined์ผ๋ undefined๋ฅผ ๋ฐํ
๊ทธ๋ ์ง ์์ผ๋ฉด ์ฐํญ์ ํ๋กํผํฐ ์ฐธ์กฐ๋ฅผ ์ด์ด๊ฐ๋ค.
(์ฐธ๊ณ - ์ต์ ๋ ์ฒด์ด๋ ์ฐ์ฐ์๊ฐ ๋์ ๋๊ธฐ ์ด์ ์๋ ๋ ผ๋ฆฌ ์ฐ์ฐ์ &&๋ฅผ ์ฌ์ฉํ ๋จ์ถํ๊ฐ๋ฅผ ์ฌ์ฉํ์๋ค.)
var elem = null;
// ๊ฐ์ด ์๋ elem ๋ณ์์ value๋ฅผ ์ฐธ์กฐํ๋ ค๊ณ ํ๋ค.
// ์ขํญ์ธ elem์ด null์ด๊ธฐ ๋๋ฌธ์ undefined๋ฅผ ๋ฐํํ๋ค.
var value = elem?.value;
console.log(value); // undefined
๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํค๊ธฐ๋ฅผ ๊ธฐ๋ํ๋ ๋ณ์๊ฐ null ๋๋ undefined๊ฐ ์๋์ง ํ์ธํ๊ณ ํ๋กํผํฐ๋ฅผ ์ฐธ์กฐํ ๋ ์ ์ฉํ๋ค.
์ขํญ ํผ์ฐ์ฐ์๊ฐ false๋ก ํ๊ฐ๋๋ Falsy๊ฐ์ด๋ผ๋
null ๋๋ undefined๊ฐ ์๋๋ฉด ์ฐํญ์ ํ๋กํผํฐ ์ฐธ์กฐ๋ฅผ ์ด์ด๊ฐ๋ค.
var elem = '';
// ๋น ๋ฌธ์์ด์ Falsy๋๋ผ๋ ์ฐํญ์ ํ๋กํผํฐ ์ฐธ์กฐ๋ฅผ ์ด์ด๊ฐ๋ค.
// ๋น ๋ฌธ์์ด์ ๊ธธ์ด๋ 0์ด๊ธฐ ๋๋ฌธ์ 0์ ๋ฐํํ๋ค.
var length = elem?.length;
console.log(length); // 0
๐ฃ null ๋ณํฉ ์ฐ์ฐ์ - ??
ES11 ๋ฌธ๋ฒ์ธ null ๋ณํฉ ์ฐ์ฐ์ ??๋ ๋ณ์์ ๊ธฐ๋ณธ๊ฐ์ ์ค์ ํ ๋ ์ ์ฉํ๋ค.
์ขํญ์ ํผ์ฐ์ฐ์๊ฐ null ๋๋ undefined์ธ ๊ฒฝ์ฐ ์ฐํญ์ ํผ์ฐ์ฐ์๋ฅผ ๋ฐํ,
๊ทธ๋ ์ง ์์ผ๋ฉด ์ขํญ์ ํผ์ฐ์ฐ์๋ฅผ ๋ฐํํ๋ค.
(์ฐธ๊ณ - null ๋ณํฉ ์ฐ์ฐ์๊ฐ ๋์ ๋๊ธฐ ์ด์ ์๋ ๋ ผ๋ฆฌ ์ฐ์ฐ์ ||๋ฅผ ์ฌ์ฉํ ๋จ์ถํ๊ฐ๋ฅผ ์ฌ์ฉํ์๋ค.)
var foo = null ?? 'default string';
console.log(foo) // 'default string'
์ขํญ์ ํผ์ฐ์ฐ์๊ฐ false๋ก ํ๊ฐ๋๋ Falsy๊ฐ์ด๋ผ๋
null ๋๋ undefine๊ฐ ์๋๋ฉด ์ขํญ์ ํผ์ฐ์ฐ์๋ฅผ ๊ทธ๋๋ก ๋ฐํํด์
Falsyํ ๊ฐ์ธ 0์ด๋ ''๋ ๊ฐ๋ฐ์๊ฐ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ ํจํ๊ฒ ์ค์ ํ๊ณ ์ถ๋ค๋ฉด
??์ฐ์ฐ์๋ฅผ ์ด์ฉํ๋๊ฒ ์ข๋ค. (๋ ผ๋ฆฌ ์ฐ์ฐ์ ||์ ๋จ์ถํ๊ฐ๋ก๋ ๋ถ์กฑํจ)
var foo = '' ?? 'default string';
console.log(foo) // ''
'Javascript ๊ณต๋ถ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
13. ์์ ๊ฐ๊ณผ ๊ฐ์ฒด์ ๋น๊ต (0) | 2023.07.15 |
---|---|
12.๊ฐ์ฒด ๋ฆฌํฐ๋ด (0) | 2023.07.15 |
11. ์์ ํ์ ๊ณผ ๊ฐ์ฒด ํ์ ์ ์ฐจ์ด(์ฝ์คํ๊ณผ ํ) (0) | 2023.07.13 |
10. JS์ ์ ์ด๋ฌธ (0) | 2023.07.12 |
9. ์๋ฐ์คํฌ๋ฆฝํธ ์์ง (0) | 2023.07.04 |