js47 JS_๊ธฐ๋ณธ ๋ฌธ๋ฒ (21)_ ์ผ๊ธ ๊ฐ์ฒด JS์ ์ผ๊ธ ๊ฐ์ฒด์ ๋ํด์ ์์๋ณด์! ์ผ๊ธ ๊ฐ์ฒด (First Class Object) ํจ์๋ฅผ ๋ณ์๋ ์์์ ๊ฐ์ฒ๋ผ ๋ค๋ฃฐ ์ ์๋ ์ธ์ด์ ์กด์ฌํ๋ ๊ฐ๋ ์ด๋ค. JS์ ํจ์๋ ์ด์ ์ํ๋ค. (JS์ ํจ์๋ ๊ฐ์ฒด์ ํ ์ข ๋ฅ์ด๋ค.) ํน์ง 1. ์์/๋ณ์์ ํ ๋น๋ ์ ์๋ค. 2. ๋ค๋ฅธ ํจ์์ ์ธ์๋ก ์ ๋ฌ๋ ์ ์๋ค. 3. ๋ค๋ฅธ ํจ์์ ๊ฒฐ๊ณผ๊ฐ์ผ๋ก์ ๋ฐํ๋ ์ ์๋ค. 1. ํ ๋น ๋ณ์/์์์ ํจ์๋ช ์ ์๋ณ์๋ก ๋ฃ์ด์ ํ ๋น์ํจ๋ค. ์ด๋ ์ฃผ์ํ ์ ์ ๊ดํธ๋ฅผ ๋ถ์ด์ง ์๋ ๊ฒ์ด๋ค. (๊ดํธ๋ฅผ ๋ถ์ด๋ฉด ํจ์ ์คํ ํ ๋ฐํ ๊ฒฐ๊ณผ๋ฅผ ํ ๋นํ๋ ๊ฒ) ์์ 1) function isOdd (num) { console.log( (num % 2 ? 'ํ' : '์ง') + '์' ); return num % 2 ? true : false; }; .. 2023. 3. 11. JS_๊ธฐ๋ณธ ๋ฌธ๋ฒ (20)_ for ๋ฃจํ+ 2022.02.11 - [๐ | WEB DEV/Vanilla JS] - JS_๊ธฐ๋ณธ๋ฌธ๋ฒ (4)_๋ฐ๋ณต๋ฌธ ๋ฐ๋ณต๋ฌธ ์ค for ๋ฌธ์ ๋ํด์ ์กฐ๊ธ ๋ ์์๋ณด์ ๊ตฌ์กฐ for ([initialization]; [condition]; [final-expression]){ ... } ๊ดํธ ์ 3๊ฐ์ ์ initialization ์ ๋๋ ๋ณ์๋ฅผ ์ ์ธํ๋ค. ์ฃผ๋ก ์นด์ดํฐ์ ์ฌ์ฉํ ๋ณ์๋ฅผ ์ด๊ธฐํํ๋ค. (์์ ์ ์ธ ์ ์ฆ๊ฐ ๋ถ๊ฐ) condition ๋งค ๋ฐ๋ณต ๋ง๋ค ํ๊ฐํ ์กฐ๊ฑด์ ์ธ์ด๋ค. ํ๊ฐ ๊ฒฐ๊ณผ๊ฐ ์ฐธ์ผ ๊ฒฝ์ฐ ์ํ๋ฌธ์ ์คํํ๋ค. ๊ฑฐ์ง์ผ ๊ฒฝ์ฐ for๋ฌธ์ ํ์ถํ๋ค. ๋ง์ฝ ๋น์ด์๋ ๊ฒฝ์ฐ ํญ์ ์ฐธ์ด๋ค. final-expression ๋งค ๋ฐ๋ณต์ ๋์ ์ํ๋๋ ์์ด๋ค. ์ฃผ๋ก ์นด์ดํฐ ๋ณ์์ ์ฆ๊ฐ์ ์ฌ์ฉ๋๋ค. (condition ์ด์ ์ ์คํ) .. 2023. 3. 8. JS_๊ธฐ๋ณธ ๋ฌธ๋ฒ (19)_ case๋ฌธ, ๊ฐ์ฒด ํ์ฉ ๋ณํ case๋ฌธ JS์์ ํ์ฉํ๋ case๋ฌธ์ ๋ํด์ ์์๋ณด์ 1. case๋ฌธ ํน์ ๊ฐ์ ๋ํ ์ฌ๋ฌ ์ต์ ์ด ์กด์ฌํ ๋ ์ฃผ๋ก ์ฌ์ฉํ๋ค. const option = 1; switch (option) { case 1: console.log('1๋ฒ'); break; case 2: console.log('2๋ฒ'); break; case 3: console.log('3๋ฒ'); break; default: console.log('๋ฌดํจ'); } >>> 1๋ฒ switch ~ case ๋ฌธ์ ์ด์ฉํ ์์๋ ์์ ๊ฐ๋ค. break ์ฃผ์ํ ์ ์ break ์ด๋ค. break๋ฅผ ์ฌ์ฉํ์ง ์๋๋ค๋ฉด ํด๋น case์ ๋ค์ case๊น์ง ์ฐ์์ ์ผ๋ก ์ํ์ด ๋๋ค. ๋ฐ๋ผ์ ์ค๊ณ์๋๋๋ก ์ํ๋๋๋ก ํ๊ธฐ ์ํด์ ์ด๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค. defalut defalut๋.. 2023. 3. 7. JS_๊ธฐ๋ณธ ๋ฌธ๋ฒ (18)_ ์ ์ด๋ฌธ๊ณผ ์ข์ ์ฝ๋? JS์์ ์ ๊ณตํ๋ if/else๋ฌธ์ ์ด์ฉํ๋ฉด ์ํ๋ ์กฐ๊ฑด์ ๋ง์ถ์ด ์ฐ์ฐ์ ์ฒ๋ฆฌํ ์ ์๋ค. const x = 4; if (x % 2) { console.log('ํ์'); } else { console.log('์ง์'); } >>> ์ง์ ์์ ์์๋ ์์ฃผ ๋จ์ํ ํ์ง ํ๋ณ ์ฝ๋์ธ๋ฐ ์ด๊ฒ๋ณด๋ค ๋ ๋ณต์กํ ์กฐ๊ฑด์ ์ ์ฉํ๋ค๋ฉด ๋น์ฐํ๋ ์ฝ๋๊ฐ ๋ณต์กํด์ง๋ค. ๊ทธ์ ๋ฐ๋ผ ๊ฐ๋ ์ฑ์ด ๋ฎ์ ์ฝ๋๊ฐ ์์ฑ๋ ์ ์๋ค. ์์) ํ์, ์ง์, 4์ ๋ฐฐ์๋ฅผ ๊ตฌ๋ถํ๋ ์ฝ๋ 1) if/else๋ฌธ์ ์ค์ฒฉ์ ํ์ฉํ ๊ฒฝ์ฐ const x = 6; if (x % 4) { if (x % 2) { console.log('ํ์'); } else { console.log('์ง์'); } } else { console.log('4์ ๋ฐฐ์'); } >>>.. 2023. 3. 4. JS_๊ธฐ๋ณธ ๋ฌธ๋ฒ (17)_์ค์ฝํ JS์์์ ์ค์ฝํ์ ๋ํด์ ์์๋ณด์! 1. ๋ธ๋ก๋ฌธ (Block) ๋ธ๋ก๋ฌธ์ 0๊ฐ ์ด์์ statement(๊ตฌ๋ฌธ)์ ๋ฌถ์ ๊ฒ์ ์ด์ผ๊ธฐํ๊ณ , ํ ์์ ์ค๊ดํธ(brackets)๋ก ๊ฐ์ธ์ ธ์๋ค. { ... } ์ผ๋ฐ์ ์ผ๋ก ์ ์ด๋ฌธ, ํจ์ ๋ฑ์ ์ฌ์ฉ์ด ๋๊ณ ๋ธ๋ก๋ฌธ์ ์๋ก์ด ์ค์ฝํ๋ฅผ ์์ฑํ๋ค 1) ์ค์ฝํ (Scope) ์ค์ฝํ๋ ๋ณ์๋ ์์, ์๋ณ์๋ค์ด ์ ํจํ๊ฒ ์ฌ์ฉ๋ ์ ์๋ ๋ฒ์๋ฅผ ๋งํ๋ค. ์ฆ, ๋ธ๋ก๋ฌธ์ ์์ฑํ ๊ฒฝ์ฐ ์๋ก์ด ๋ฒ์๋ฅผ ์์ฑํ๊ฒ ๋๋ ๊ฒ์ด๋ค. ํน์ง 1_ ๋ธ๋ก ์์ ์ ์ธ๋ ๋ณ์์ ์์๋ฅผ ๊ทธ ๋ฐ์์ ์ฌ์ฉ ๋ถ๊ฐ { let x = 1; console.log(x); } console.log(x); >>> 1 >>> Uncaught ReferenceError: x is not defined ์์ ์์์ฒ๋ผ ๋ธ๋ก ์์ ์ ์ธ.. 2023. 3. 3. JS_๊ธฐ๋ณธ ๋ฌธ๋ฒ (16)_์์ํ์ ๊ณผ ์ฐธ์กฐํ์ JS์๋ ์์ํ์ ๊ณผ ์ฐธ์กฐํ์ ์ด ์กด์ฌํ๋ค. ๊ทธ ๋์ ๊ฐ์ ๋ณต์ฌ์ ์ธก๋ฉด์์ ๋น๊ตํ๋ฉฐ ์์๋ณด์! 1) ์์ํ์ ์์ํ์ ์ ๊ฐ์ ์ํ ๋ณต์ฌ๊ฐ ์ด๋ฃจ์ด์ง๋ค.(Copy by value) let n1 = 1; let s1 = 'A'; //n1, s1 ๋ณต์ฌ let n2 = n1; let s2 = s1; //์๋ก์ด ๊ฐ ํ ๋น n2 = 2; s2 = 'B'; console.log(n1, s1); console.log(n2, s2); >>> 1 'A' >>> 2 'B' ์์ ๊ฒฐ๊ณผ์ฒ๋ผ ๊ฐ ์์ฒด๋ฅผ ๋ณต์ฌํ๋ ๊ฒ์ด๋ฏ๋ก ๋ณต์ฌ๋ฅผ ํ ์ดํ, ๋ฌด์จ ์ง์ ํ๋ ์๋ก์๊ฒ ์ํฅ์ ์ฃผ์ง ์๋๋ค. 2) ์ฐธ์กฐํ์ ์ฐธ์กฐํ์ ์ '์ฃผ์๊ฐ'์ด ๋ณต์ฌ๊ฐ ๋๋ค. (Copy by reference) const ob1 = { num : 1, str : 'A' }; /.. 2023. 3. 1. JS_๊ธฐ๋ณธ ๋ฌธ๋ฒ (15)_์ฐ์ฐ์(์ผํ, null๋ณํฉ(??) ) ์ง๊ธ๊น์ง ์ดํด๋ณธ ๊ฒ ์ธ์ ์ฐ์ฐ์๋ค์ ๋ํด์๋ ์์๋ณด์! 1. ์ผํ ์ฐ์ฐ์ ์ผ์ชฝ๋ถํฐ ์ฐจ๋ก๋ก ์คํ๋๋ฉฐ, ๊ฐ์ฅ ๋ง์ง๋ง ์ฐ์ฐ์ ๋ฐํํ๋ค. console.log( (1,2,3) ); >>> 3 console.log( (10/2, 5%2, 1+1) ); >>> 2 ์ด์ฒ๋ผ ๊ฐ์ฅ ๋ง์ง๋ง ์ฐ์ฐ์ ๊ฐ์ ๋ฐํํ๋ค! 2. null ๋ณํฉ ์ฐ์ฐ์ ?? null ๋๋ undefined๋ฅผ ๊ฑธ๋ฌ๋ผ ์ ์๋ ์ฐ์ฐ์์ด๋ค. ์ฆ, ์์ ์์๊ฐ ๋ ์ค ํ๋์ผ ๊ฒฝ์ฐ ๋ค์ ์์๋ก ๋์ฒด๊ฐ ๊ฐ๋ฅํ๋ค! let x;//undefined x ?? console.log('Hello'); x = null;//null x ?? console.log('Hello'); x = 0; x ?? console.log('Hello'); //0์ ๋ฐํํ๊ณ ์ข ๋ฃ x = 1;.. 2023. 2. 26. JS_๊ธฐ๋ณธ ๋ฌธ๋ฒ (14)_๋ถ๋ฆฌ์ธ์ ์ฌ์ฉ๋๋ ์ฐ์ฐ์๋ค ๋ถ๋ฆฌ์ธ(boolean)์ ๊ด๋ จ๋ ์ฐ์ฐ์๋ค์ ๋ํด์ ์์๋ณด์! let a = 1 === 2;//false let b = 'abc' !== 'def'//true let c = a !== b;//true let d = typeof a === typeof b === true;//true 4๋ฒ์งธ ์์์ ๊ฐ์ด ์ฐ์ ๋น๊ต ์์๋ ์ฐ์ ์์์ ๋ฐ๋ผ ์ฐ์ฐ์ด ๋๋ค. (ํด๋น ์์๋ ๊ฐ์ ์ฐ์ ์์ ์ด๋ฏ๋ก ์์ ์ฐ์ฐ์ด ๋จผ์ ) 1. ์ฐ์ฐ์ 1) ๋ถ์ ์ฐ์ฐ์ ! ๋ฅผ ์ด์ฉํด NOT ์ฐ์ฐ์ ์ํํ ์ ์๋ค. !true //false !!true//true ์ด๋ !!๋ก ๋๊ฐ๋ฅผ ๋ถ์ผ ๊ฒฝ์ฐ !๊ฐ ์๋ก ์นํ๋๋๋ฐ ์ด๋ฅผ ์ด์ฉํ์ฌ ํ์ฌ ๊ฐ์ boolean ๊ฐ์ผ๋ก ๋ณํ ํ ์ ์๋ค. console.log(!!'a') >>> true 2) AND O.. 2023. 2. 26. JS_๊ธฐ๋ณธ ๋ฌธ๋ฒ (13)_์ซ์์ ์ฌ์ฉ๋๋ ์ฐ์ฐ์๋ค ์ซ์์ ๊ด๋ จ๋ ์ฐ์ฐ์๋ค์ ์์๋ณด์! 1. ์ซ์ ์๋ฃํ number 1) ์๊ณผ ์ JS์์๋ ์ ์์ ์ค์ ๋ชจ๋ number ์๋ฃํ์ด๋ค. ์ฆ, ์ ์๋ ๋ด๋ถ์์ ์ค์๋ฅผ ํํํ๋ ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌ๋๋ค. + ์ -๋ก ์๊ณผ ์์ ๋ํ๋ธ๋ค! 2) ๋ฌดํ๋ Infinity ๋ ๋ฌดํ๋๋ฅผ ํํํ๋ ์๋ฃํ์ผ๋ก number์ ๋ฒ์ฃผ์ ์ํ๋ค. ์ด ๋ํ ์๊ณผ ์์ด ์กด์ฌํ๋ค. 3) NaN Not a Number์ ์ฝ์๋ก ์ซ์๊ฐ ์๋ ๊ฒ์ ์๋ฏธํ๋ค. NaN ์ญ์ number์ ๋ฒ์ฃผ์ ์ํ๋ค. let x = 1 / 'a'; let y = 2 * 'a'; let z = NaN; console.log(x, typeof x); console.log(y, typeof y); console.log(z, typeof z); >>> NaN 'numbe.. 2023. 2. 26. ์ด์ 1 2 3 4 5 6 ๋ค์