๋ ์ ๋ชฉ๋ก/๋ชจ๋ฅ๋ค Modern JS Deep Dive (36) ์ธ๋ค์ผํ ๋ฆฌ์คํธํ [๋ชจ๋ฅ๋ค] 11์ฅ ์์ ๊ฐ๊ณผ ๊ฐ์ฒด์ ๋น๊ต ์์๊ฐ ๊ฐ์ฒด - ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅํ ๊ฐ - ๋ณ์์ ์ค์ ๊ฐ ์ ์ฅ - ๋ค๋ฅธ ๋ณ์์ ํ ๋น : ์์ ๊ฐ์ด ๋ณต์ฌ๋์ด ์ ๋ฌ (๊ฐ์ ์ํ ์ ๋ฌ) - ๋ณ๊ฒฝ ๊ฐ๋ฅํ ๊ฐ - ๋ณ์์ ์ฐธ์กฐ ๊ฐ ์ ์ฅ - ๋ค๋ฅธ ๋ณ์์ ํ ๋น : ์ฐธ์กฐ ๊ฐ์ด ๋ณต์ฌ๋์ด ์ ๋ฌ (์ฐธ์กฐ์ ์ํ ์ ๋ฌ) ๐ฅช 11. 1 ์์ ๊ฐ 11.1.1 ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅํ ๊ฐ ์์ ํ์ ์ ๊ฐ. ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅํ ๊ฐ. ํ๋ฒ ์์ฑ๋๋ฉด ๋ณ๊ฒฝํ ์ ์์. ๐ ๋ณ๊ฒฝ์ ํ ์ ์๋ค๋ ๊ฑด ๋ณ์๊ฐ ์๋๋ผ ๊ฐ์ ๋ํ ๊ฒ. ๋ณ์๋ ์ธ์ ๋ ์ฌํ ๋น ๊ฐ๋ฅ. ๊ทธ ์ค ์์๋ ์ฌํ ๋น ๋ถ๊ฐ๋ฅ. ํ์ง๋ง ์์์ ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅํ ๊ฐ์ ๋์ผ์ โ ์์์ ๊ฐ์ฒด๋ฅผ ํ ๋นํ๋ฉด ์ฌํ ๋น์ โ ๊ฐ(๋ด์ฉ) ๋ณ๊ฒฝ์ ๊ฐ๋ฅ ์์ ๊ฐ์ ์ฌํ ๋น -> ์๋ก์ด ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ ํ๋ณด -> ์ฌํ ๋นํ ์์๊ฐ ์ ์ฅ -> ๋ณ์๊ฐ ์ฐธ์กฐํ๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ ๋ฐ๋. (์ด.. [๋ชจ๋ฅ๋ค] 09์ฅ ํ์ ๋ณํ๊ณผ ๋จ์ถ ํ๊ฐ ๐ฟ 9.1 ํ์ ๋ณํ์ด๋? 1๏ธโฃ ๋ช ์์ ํ์ ๋ณํ (=== ํ์ ์บ์คํ ) : ๊ฐ๋ฐ์๊ฐ ์๋์ ์ผ๋ก ๊ฐ์ ํ์ ์ ๋ณํํ๋ ๊ฒ. 2๏ธโฃ ์๋ฌต์ ํ์ ๋ณํ (=== ํ์ ๊ฐ์ ๋ณํ) : ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ์ํด ์๋ฌต์ ์ผ๋ก ํ์ ์ด ์๋ ๋ณํ๋๋ ๊ฒ. โ ํ์ ๋ณํ์ด ์์๊ฐ์ ์ง์ ๋ณ๊ฒฝํ๋ ๊ฒ์ ์๋. => ํ์ ๋ณํ์ด๋ ๊ธฐ์กด ์์ ๊ฐ์ ์ฌ์ฉํด ๋ค๋ฅธ ํ์ ์ ์๋ก์ด ์์ ๊ฐ์ ์์ฑํ๋ ๊ฒ. -> ์๋ก์ด ํ์ ์ ๊ฐ์ ๋ง๋ค์ด ๋จ ํ๋ฒ ๊ฐ์ฉํ๊ณ ๋ฒ๋ฆผ. ์๋ฌต์ ํ์ ๋ณํ์ ์ฝ๋ ์์์ ๋ช ๋ฐฑํ ๋ํ๋์ง ์๊ธฐ ๋๋ฌธ์, ๊ฐ๋ฐ์ ์์ ์ด ์์ฑํ ์ฝ๋์์ ์๋ฌต์ ํ์ ๋ณํ์ด ๋ฐ์ํ๋์ง, ๋ฐ์ํ๋ค๋ฉด ์ด๋ค ๊ฐ์ผ๋ก ๋ณํ๋๋์ง, ๊ทธ๋ฆฌ๊ณ ํ์ ๋ณํ๋ ๊ฐ์ผ๋ก ํํ์์ด ์ด๋ป๊ฒ ํ๊ฐ๋ ๊ฒ์ธ์ง ์์ธก ๊ฐ๋ฅํด์ผ ํ๋ค. => ํ์ ๋ณํ์ด ์ด๋ป๊ฒ ๋์ํ๋.. [๋ชจ๋ฅ๋ค] 03์ฅ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ๋ฐ ํ๊ฒฝ๊ณผ ์คํ ๋ฐฉ๋ฒ ๐ผ๏ธ3.1 ์๋ฐ์คํฌ๋ฆฝํธ ์คํํ๊ฒฝ JS๋ ๋ธ๋ผ์ฐ์ ํ๊ฒฝ ๋๋ NodeJS ์์ ๋์ผํ๊ฒ ๋์ํ๋ค. ๋ธ๋ผ์ฐ์ ์ NodeJS๋ ์ฉ๋๊ฐ ๋ค๋ฆ. ๐ต ๋ธ๋ผ์ฐ์ (์น ์ดํ๋ฆฌ์ผ์ด์ ์ JS) - HTML, CSS, JS ๋ฅผ ์คํํด ์นํ์ด์ง๋ฅผ ๋ธ๋ผ์ฐ์ ํ๊ฒฝ์ ๋ ๋๋ง ํ๋ ๊ฒ์ด ์ฃผ ๋ชฉ์ - DOM API ๋ฅผ ๊ธฐ๋ณธ ์ ๊ณต - ํ์ผ ์์ฑ, ์์ ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง ์๋ ์ด์ ๋ ๋ธ๋ผ์ฐ์ ์์์ ๋ณด์ด๊ธฐ ๋๋ฌธ -> ๋ณด์์ ์ด์ ๐ต NodeJs - ๋ธ๋ผ์ฐ์ ์ธ๋ถ์์ JS ์คํํ๊ฒฝ์ ์ ๊ณตํ๋ ๊ฒ์ด ์ฃผ๋ ๋ชฉ์ . - ํ์ผ ์์ฑ, ์์ ํ ์ ์๋ ํ์ผ ์์คํ ๊ธฐ๋ณธ ์ ๊ณต - ๊ณ ์ ์ API ์ ๊ณต -> HTML ์์๋ฅผ ํ์ฑํด์ ๊ฐ์ฒดํํ DOM (Document Object Model) ๋ฅผ ์ง์ ๋ค๋ฃฐ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ. -> ๋ ๋ค ECMAScrip.. [๋ชจ๋ฅ๋ค] 02์ฅ ์๋ฐ์คํฌ๋ฆฝํธ๋? 2.1 ์๋ฐ์คํฌ๋ฆฝํธ์ ํ์ - ๋ท์ค์ผ์ดํ. ์นํ์ด์ง์ ๋ณด์กฐ์ ์ธ ๊ธฐ๋ฅ ์ํ์ ์ํด ๊ฒฝ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ๋์ . - ๋ธ๋ ๋ ์์ดํฌ๊ฐ ๊ฐ๋ฐํจ. 2.2. ์๋ฐ์คํฌ๋ฆฝํธ์ ํ์คํ - ๋ธ๋ผ์ฐ์ ์ ๋ฐ๋ผ ์นํ์ด์ง๊ฐ ์ ์์ ์ผ๋ก ๋์ํ์ง ์๋ : ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ง ์ด์ ๋ฐ์ - ์๋ฐ์คํฌ๋ฆฝํธ์ ํ์คํ ์์ฒญ -> ECMA 2.3 ์๋ฐ์คํฌ๋ฆฝํธ ์ฑ์ฅ์ ์ญ์ฌ - ์ด์ฐฝ๊ธฐ์ ์๋ฒ๋ก๋ถํฐ ๋ฐ์ HTML, CSS๋ฅผ ๋จ์ํ ๋ ๋๋ง ํ๋ ์์ค์ด์์. - ๋ ๋๋ง : HTML, CSS, JS ๋ก ์์ฑ๋ ๋ฌธ์๋ฅผ ํด์ -> ๋ธ๋ผ์ฐ์ ์ ์์์ ์ผ๋ก ์ถ๋ ฅํ๋ ๊ฒ์ ๋งํจ. 2.3.1 Ajax JS๋ฅผ ์ด์ฉํด ์๋ฒ์ ๋ธ๋ผ์ฐ์ ๊ฐ ๋น๋๊ธฐ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ตํํ ์ ์๋ ํต์ ๊ธฐ๋ฅ. - ์ด์ ์๋ ์์ ํ HTML ์ฝ๋๋ฅผ ๋ฐ์์ ์ ์ฒด๋ฅผ ๋ ๋๋ง -> ํ๋ฉด์ด ์ ํ๋๋ฉด ์๋ฒ๋ก.. [๋ชจ๋ฅ๋ค] 01์ฅ ํ๋ก๊ทธ๋๋ฐ ์์ : 23.09.17 ๋ชจ๋ฅ๋ค ๊ฐ์ด ์ฝ๊ธฐ 2๊ธฐ๋ฅผ ๋ชจ์งํ๊ณ ์ค๋๋ถํฐ 1์ฃผ์ฐจ ์์! ๋นจ๋ฆฌ ๊ฐ๋ ์ ์ผํ ๋ฐฉ๋ฒ์ ์ ๋๋ก ๊ฐ๋ ๊ฒ์ด๋ค - ๋ก๋ฒํธ ๋งํด - ํด๋ฆฐ์ฝ๋ ์ ์ + ๋ค์ด๊ฐ๊ธฐ - ์ฝ๋๋ฅผ ๊ตฌํํ๋ ค๋ฉด ๋น์ฐํ ์์ ์ด ์์ฑํ๋ ์ฝ๋์ ๋์์ ์์ธกํ ์ ์์ด์ผ ํฉ๋๋ค. ์ฝ๋์ ๋์์ ์์ธกํ์ง ๋ชปํ๋ ์ํ์์ ์ฝ๋๋ฅผ ์์ฑํ๋ค๋ ๊ฒ์ ๋ง์ด ๋์ง ์์ต๋๋ค. ํค์๋ ์์ฃผ๋ก ๊ณต๋ถํ๊ธฐ. ์ฒ์๋ถํฐ ์๋ฒฝ ๋ถ๊ฐ! ์ฌ๋ฌ๋ฒ ๋ฐ๋ณตํด์ ํ์ตํ๋ ๊ฒ์ด ํจ์จ์ ! ์๋์ ์ธ ์ฐ์ต๋ ํ์. ์ฌ๊ธฐ์ ์๋์ ์ธ ์ฐ์ต์ด๋? ๊ตฌ๊ฒฝ ใดใด, ์ฝ๊ฒ ํด๊ฒฐ ๊ฐ๋ฅํ ๊ฒ์ ๋ฐ๋ณตํ๋ ๊ฒ๋ ์๋. => ์์ ์ ๋ฅ๋ ฅ์ ์ด์ง ๋์ด์๋ ๋์ ์ ์ง์์ ์ผ๋ก ์๋ํ๋ ๊ฒ!! 1.1 ํ๋ก๊ทธ๋๋ฐ์ด๋? ํ๋ก๊ทธ๋๋ฐ์ด๋ ์คํ์ ์๊ตฌํ๋ ์ผ์ข ์ ์ปค๋ฎค๋์ผ์ด์ . -> ์ฆ, ํ๋ก๊ทธ๋๋ฐ์ ์์ ํด๊ฒฐ.. [๋ชจ๋ฅ๋ค] 10์ฅ ๊ฐ์ฒด ๋ฆฌํฐ๋ด (์์ 23.5.2) ๐ท 10.1 ๊ฐ์ฒด๋? JS๋ ๊ฐ์ฒด ๊ธฐ๋ฐ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ด๋ฉฐ, JS ๋ฅผ ๊ตฌ์ฑํ๋ ๊ฑฐ์ ๋ชจ๋ ๊ฒ์ด ๊ฐ์ฒด. ์์๊ฐ์ ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅ์ด์ง๋ง, ๊ฐ์ฒด๋ ๋ณ๊ฒฝ ๊ฐ๋ฅํ ๊ฐ. ๊ฐ์ฒด๋ 0๊ฐ ์ด์์ ํ๋กํผํฐ๋ก ๊ตฌ์ฑ๋ ์งํฉ์ด๋ฉฐ, ํ๋กํผํฐ๋ ํค์ ๊ฐ์ผ๋ก ๊ตฌ์ฑ๋๋ค. ํ๋กํผํฐ ๊ฐ์ด ํจ์์ผ ๊ฒฝ์ฐ, ์ผ๋ฐ ํจ์์ ๊ตฌ๋ถํ๊ธฐ ์ํด '๋ฉ์๋' ๋ผ๊ณ ํ๋ค. let counter = { num: 0 // ํ๋กํผํฐ increase: function(){ this.num++; } //๋ฉ์๋ } ๐ต ํ๋กํผํฐ : ๊ฐ์ฒด์ ์ํ๊ฐ์ ๋ํ๋. ๐ต ๋ฉ์๋ : ํ๋กํผํฐ๋ฅผ ์ฐธ์กฐํ๊ณ ์กฐ์ํ ์ ์๋ ๋์ -> ๊ฐ์ฒด๋ ์ํ์ ๋์์ ํ๋์ ๋จ์๋ก ๊ตฌ์กฐํ ํ ์ ์์ด ์ ์ฉ ๐ต ๊ฐ์ฒด์ ํจ์ - ํจ์๋ก ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ธฐ๋ ํ์ง๋ง, ํจ์ ์์ฒด๊ฐ ๊ฐ์ฒด์ด๊ธฐ๋.. [๋ชจ๋ฅ๋ค] 08์ฅ ์ ์ด๋ฌธ (์์ 23.4.29) ์ ์ด๋ฌธ : ์กฐ๊ฑด์ ๋ฐ๋ผ ์ฝ๋ ๋ธ๋ก์ ์คํํ๊ฑฐ๋ ๋ฐ๋ณต ์คํํ ๋ ์ฌ์ฉํ๋ค. (์กฐ๊ฑด๋ฌธ, ๋ฐ๋ณต๋ฌธ) ์ ์ด๋ฌธ, ํนํ for ๋ฌธ์ ์ดํดํ๋ ๊ฑด ๋งค์ฐ ์ค์. ์ ์ด๋ฌธ์ ์ฝ๋์ ํ๋ฆ์ ์ดํดํ๊ธฐ ์ด๋ ต๊ฒ ๋ง๋ค์ด ๊ฐ๋ ์ฑ์ ํด์น๋ ๋จ์ ์ด ์์. => ๊ฐ๋ ์ฑ์ด ์ข์ง ์์ ์ฝ๋๋ ์ค๋ฅ๋ฅผ ๋ฐ์์ํค๋ ์์ธ์ด ๋จ. ๐ฆ 8.1 ๋ธ๋ก๋ฌธ 0๊ฐ ์ด์์ ๋ฌธ์ ์ค๊ดํธ๋ก ๋ฌถ์ ๊ฒ. ์ฝ๋ ๋ธ๋ก ๋๋ ๋ธ๋ก์ด๋ผ๊ณ ๋ถ๋ฅด๊ธฐ๋ ํจ. ํ๋์ ์คํ๋จ์. ์์ฒด ์ข ๊ฒฐ์ฑ์ด ์๊ธฐ ๋๋ฌธ์ ์ธ๋ฏธ์ฝ๋ก ์๋ถํ. ๐ฆ 8.2 ์กฐ๊ฑด๋ฌธ ์กฐ๊ฑด๋ฌธ์ ์ฃผ์ด์ง ์กฐ๊ฑด์์ ํ๊ฐ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ์ฝ๋ ๋ธ๋ก์ ์คํ์ ์ ์ ํจ. 8.2.1 if... else ๋ฌธ if .. else if.. else if ๋ฌธ ๋ด์ ์กฐ๊ฑด์์ ๋ถ๋ฆฌ์ธ ๊ฐ์ผ๋ก ํ๊ฐ ๋์ด์ผ ํจ. boolean์ด ์๋๋ผ๋ฉด ๊ฐ์ .. [๋ชจ๋ฅ๋ค] 07์ฅ ๋ฐ์ดํฐ ํ์ (7.5~7.13) (์์ 23.4.27) ์ ๋ด์ฉ https://mayongee.tistory.com/306 [๋ชจ๋ฅ๋ค] 07์ฅ ๋ฐ์ดํฐ ํ์ (7.1~7.4) (์์ 23.4.27) ์ฐ์ฐ์๋ ํ๋ ์ด์์ ํํ์์ ๋์์ผ๋ก ์ฐ์ , ํ ๋น, ๋น๊ต, ๋ ผ๋ฆฌ, ํ์ ๋ฑ์ ์ํํด ํ๋์ ๊ฐ์ ๋ง๋ ๋ค. ํผ์ฐ์ฐ์ - '๊ฐ'์ด๋ผ๋ ๋ช ์ฌ ์ญํ , ์ฐ์ฐ์ - '์ฐ์ฐํด ์๋ก์ด ๊ฐ์ ๋ง๋ ๋ค' ๋ผ mayongee.tistory.com ๐ช 7.5 ๋ ผ๋ฆฌ ์ฐ์ฐ์ || (๋ ผ๋ฆฌํฉ) && (๋ ผ๋ฆฌ๊ณฑ) ! (๋ถ์ ) !๋ ์ธ์ ๋ boolean ๊ฐ์ ๋ฐํํ์ง๋ง ํผ์ฐ์ฐ์๊ฐ ๋ฐ๋์ ๋ถ๋ฆฌ์ธ ๊ฐ์ผ ํ์๋ ์๋ค. boolean ๊ฐ์ผ๋ก ์๋ฌต์ ์ผ๋ก ๋ณํ๋๊ธฐ ๋๋ฌธ. || ์ && ๋ ๋จ์ถํ๊ฐ๋ก ์ธํด ๊ฒฐ๊ณผ๊ฐ boolean ๊ฐ์ด ์๋ ์๋ ์๋ค. ๐ช ๋ ๋ชจ๋ฅด๊ฐ์ ๋ฒ์น !(A || B) .. ์ด์ 1 2 3 4 5 ๋ค์