๋ชฉ๋กdeepdive (12)
๐ค ์์งlog ๐ค
๐ฃ ์ผ๊ธ ๊ฐ์ฒด ๋ฌด๋ช ์ ๋ฆฌํฐ๋ด๋ก ์์ฑํ ์ ์๋ค. ์ฆ, ๋ฐํ์์ ์์ฑ์ด ๊ฐ๋ฅํ๋ค. ๋ณ์๋ ์๋ฃ๊ตฌ์กฐ(๊ฐ์ฒด,๋ฐฐ์ด ๋ฑ)์ ์ ์ฅํ ์ ์๋ค. ํจ์์ ๋งค๊ฐ๋ณ์์ ์ ๋ฌํ ์ ์๋ค. ํจ์์ ๋ฐํ๊ฐ์ผ๋ก ์ฌ์ฉํ ์ ์๋ค. ํจ์๋ ๊ฐ์ ์ฌ์ฉํ ์ ์๋ ๊ณณ(๋ณ์ ํ ๋น๋ฌธ, ๊ฐ์ฒด์ ํ๋กํผํฐ ๊ฐ, ๋ฐฐ์ด์ ์์, ํจ์ ํธ์ถ์ ์ธ์, ํจ์ ๋ฐํ๋ฌธ)์ด๋ผ๋ฉด ์ด๋์๋ ์ง ๋ฆฌํฐ๋ด๋ก ์ ์ํ ์ ์์ผ๋ฉฐ ๋ฐํ์์ ํจ์ ๊ฐ์ฒด๋ก ํ๊ฐ๋๋ค. ์ผ๊ธ ๊ฐ์ฒด๋ก์ ํจ์๊ฐ ๊ฐ์ง๋ ๊ฐ์ฅ ํฐ ํน์ง์ ์ผ๋ฐ ๊ฐ์ฒด์ ๊ฐ์ด ํจ์์ ๋งค๊ฐ๋ณ์์ ์ ๋ฌํ ์ ์์ผ๋ฉฐ, ํจ์์ ๋ฐํ๊ฐ์ผ๋ก ์ฌ์ฉํ ์๋ ์๋ค๋ ๊ฒ์ด๋ค. ํจ์๋ ๊ฐ์ฒด ์ด์ง๋ง ์ผ๋ฐ ๊ฐ์ฒด์๋ ์ฐจ์ด๊ฐ ์๋ค. ์ผ๋ฐ ๊ฐ์ฒด๋ ํธ์ถํ ์ ์์ง๋ง ํจ์ ๊ฐ์ฒด๋ ํธ์ถํ ์ ์๋ค. ๊ทธ๋ฆฌ๊ณ ํจ์ ๊ฐ์ฒด๋ ์ผ๋ฐ ๊ฐ์ฒด์๋ ์๋ ํจ์ ๊ณ ์ ์ ํ๋กํผํฐ๋ฅผ ์์ ํ๋ค...
๐ฃ Object ์์ฑ์ ํจ์ new์ฐ์ฐ์์ ํจ๊ป Object ์์ฑ์ ํจ์๋ฅผ ํธ์ถํ๋ฉด ๋น ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ ๋ฐํํ๋ค. ๋น ๊ฐ์ฒด๋ฅผ ์์ฑํ ์ดํ ํ๋กํผํฐ ๋๋ ๋ฉ์๋๋ฅผ ์ถ๊ฐํ์ฌ ๊ฐ์ฒด๋ฅผ ์์ฑํ ์ ์๋ค. ์์ฑ์ ํจ์๋ new ์ฐ์ฐ์์ ํจ๊ป ํธ์ถํ์ฌ ๊ฐ์ฒด(์ธ์คํด์ค)๋ฅผ ์์ฑํ๋ ํจ์๋ฅผ ๋งํ๋ค. ์์ฑ์ ํจ์์ ์ํด ์์ฑ๋ ๊ฐ์ฒด๋ฅผ ์ธ์คํด์ค๋ผ ํ๋ค. ๐ฃ ์์ฑ์ ํจ์ ๊ฐ์ฒด ๋ฆฌํฐ๋ด์ ์ํ ๊ฐ์ฒด ์์ฑ ๋ฐฉ์์ ๋ฌธ์ ์ ๊ฐ์ฒด ๋ฆฌํฐ๋ด์ ์ํ ๊ฐ์ฒด ์์ฑ ๋ฐฉ์์ ์ง๊ด์ ์ด๊ณ ๊ฐํธํ๋ค. ํ์ง๋ง ๊ฐ์ฒด ๋ฆฌํฐ๋ด์ ์ํ ๊ฐ์ฒด ์์ฑ ๋ฐฉ์์ ๋จ ํ๋์ ๊ฐ์ฒด๋ง ์์ฑํ๋ค. ๋ฐ๋ผ์ ๋์ผํ ํ๋กํผํฐ๋ฅผ ๊ฐ๋ ๊ฐ์ฒด๋ฅผ ์ฌ๋ฌ ๊ฐ ์์ฑํด์ผ ํ๋ ๊ฒฝ์ฐ ๋งค๋ฒ ๊ฐ์ ํ๋กํผํฐ๋ฅผ ๊ธฐ์ ํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋นํจ์จ์ ์ด๋ค. ๊ฐ์ฒด ๋ฆฌํฐ๋ด์ ์ํด ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๊ฒฝ์ฐ ํ๋กํผํฐ ๊ตฌ์กฐ๊ฐ ๋์ผ..
๐ฃ ๋ด๋ถ ์ฌ๋กฏ๊ณผ ๋ด๋ถ ๋ฉ์๋ ๋ ์๋ฐ์คํธ๋ฆฝํธ ์์ง์ ๊ตฌํ ์๊ณ ๋ฆฌ์ฆ์ ์ค๋ช ํ๊ธฐ ์ํด ECMAScript ์ฌ์์์ ์ฌ์ฉํ๋ ์์ฌ ํ๋กํผํฐ์ ์์ฌ ๋ฉ์๋ ๋ค. ์ด์ค ๋๊ดํธ [[...]]๋ก ๊ฐ์ผ ์ด๋ฆ๋ค์ด ๋ด๋ถ ์ฌ๋กฏ๊ณผ ๋ด๋ถ ๋ฉ์๋๋ค. ๋ด๋ถ ์ฌ๋กฏ๊ณผ ๋ด๋ถ ๋ฉ์๋๋ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ๋ด๋ถ ๋ก์ง์ด๋ฏ๋ก ์์น์ ์ผ๋ก ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ด๋ถ ์ฌ๋กฏ๊ณผ ๋ด๋ถ ๋ฉ์๋์ ์ง์ ์ ์ผ๋ก ์ ๊ทผํ๊ฑฐ๋ ํธ์ถํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ์ง ์๋๋ค. ๐ฃ ํ๋กํผํฐ ์ดํธ๋ฆฌ๋ทฐํธ์ ๋์คํฌ๋ฆฝํฐ ๊ฐ์ฒด ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ํ๋กํผํฐ๋ฅผ ์์ฑํ ๋ ํ๋กํผํฐ์ ์ํ๋ฅผ ๋ํ๋ด๋ ํ๋กํผํฐ ์ดํธ๋ฆฌ๋ทฐํธ๋ฅผ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์๋ ์ ์ ํ๋ค. (ํ๋กํผํฐ์ ์ํ๋ ํ๋กํผํฐ์ ๊ฐ, ๊ฐ์ ๊ฐฑ์ ๊ฐ๋ฅ ์ฌ๋ถ, ์ด๊ฑฐ ๊ฐ๋ฅ ์ฌ๋ถ, ์ฌ์ ์ ๊ฐ๋ฅ ์ฌ๋ถ๋ฅผ ๋งํ๋ค.) ํ๋กํผํฐ ์ดํธ๋ฆฌ๋ทฐํธ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ด ๊ด์ด..
๋ชจ๋ ์๋ณ์( ๋ณ์์ด๋ฆ, ํจ์์ด๋ฆ, ํด๋์ค ์ด๋ฆ ๋ฑ)๋ ์์ ์ด ์ ์ธ๋ ์์น์ ์ํด ๋ค๋ฅธ ์ฝ๋๊ฐ ์๋ณ์ ์์ ์ ์ฐธ์กฐํ ์ ์๋ ์ ํจ๋ฒ์๊ฐ ๊ฒฐ์ ๋๋ค. ์ค์ฝํ๋ ์๋ณ์๊ฐ ์ ํจํ ๋ฒ์๋ฅผ ๋งํ๋ค. ์๋ณ์๋ ์ด๋ค ๊ฐ์ ๊ตฌ๋ณํ ์ ์์ด์ผ ํ๋ฏ๋ก ์ ์ผ ํด์ผ ํ๋ค. ์ ์ญ๊ณผ ์ ์ญ ์ค์ฝํ ( Global Scope ) ์ ์ญ์ด๋ ์ฝ๋์ ๊ฐ์ฅ ๋ฐ๊นฅ ์์ญ์ ๋งํ๊ณ ์ ์ญ ์ค์ฝํ๋ฅผ ๋ง๋ ๋ค ์ ์ญ๋ณ์๋ ์ด๋์๋ ์ง ์ฐธ์กฐํ ์ ์๋ค. ์ง์ญ๊ณผ ์ง์ญ ์ค์ฝํ ( Local Scope ) ์ง์ญ์ด๋ ํจ์ ๋ชธ์ฒด ๋ด๋ถ๋ฅผ ๋งํ๊ณ ์ง์ญ ์ค์ฝํ๋ฅผ ๋ง๋ ๋ค ์ง์ญ๋ณ์๋ ์์ ์ ์ง์ญ ์ค์ฝํ์ ํ์ ์ง์ญ ์ค์ฝํ์์ ์ ํจ ํ๋ค. โญ๏ธ ์์์๋ ๋ฐ์ ๋ณผ ์ ์์ง๋ง ๋ฐ์์๋ ์์ ๋ณผ ์ ์๊ณ ์ ๊ทผ์ด ์๋๋ค. ๐ ์ ์ญ ๋ณ์์ ๋ฌธ์ ์ ์ ์ญ๋ณ์์ ๋ฌด๋ถ๋ณํ ์ฌ์ฉ์ ์ํํ๋ค. ์ ์ญ..
ํจ์๋ ์๋ฐ์คํฌ๋ฆฝํธ์์ ๊ฐ์ฅ ์ค์ํ ํต์ฌ ๊ฐ๋ ์ด๋ฉฐ, ๋ ๋ค๋ฅธ ์ค์ํ ํต์ฌ ๊ฐ๋ ๋ค( ์ค์ฝํ, ์คํ ์ปจํ ์คํธ, ํด๋ก์ , ์์ฑ์ ํจ์์ ์ํ ๊ฐ์ฒด ์์ฑ, ๋ฉ์๋, this, ํ๋กํ ํ์ , ๋ชจ๋ํ ๋ฑ)๊ณผ ๊น์ ๊ด๋ จ์ด ์๋ค. ํจ์๋ ๋ค๋ฅธ ๋ณ์์ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ณ์์ ํ ๋น์ด ๋๊ณ ํจ์์ ๋งค๊ฐ ๋ณ์๋ก ์ ๋ฌ์ด ๋๋ฉฐ ๋ฆฌํด๊ฐ์ผ๋ก๋ ๋ฆฌํด์ด ๋๋ค. (Function Expression) ํจ์๋ ํ๋ก๊ทธ๋จ์ ๊ตฌ์ฑํ๋ ๊ธฐ๋ณธ์ ์ด building block ์ด๋ฉฐ sub-program ์ด๋ผ๊ณ ๋ ๋ถ๋ฆฌ๋ฉฐ ์ฌ๋ฌ๋ฒ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ๋ค๋ ์ฅ์ ์ด ์๋ค. ํ๊ฐ์ง task ๋ ์ด๋ ํ ๊ฐ์ ๊ณ์ฐํ๊ธฐ ์ํด ์ฌ์ฉํ๋ค. โญ๏ธ ํจ์๋ input ๊ณผ output์ด ์ค์ํ๊ณ ํจ์์ ์ด๋ฆ์ ์ ํ๋๊ฒ์ด ์ค์! function name(param1, param2) { body..
์์ ํ์ ๊ณผ ๊ฐ์ฒด ํ์ ์ ํฌ๊ฒ ์ธ ๊ฐ์ง ์ธก๋ฉด์์ ๋ค๋ฅด๋ค. ์์ ํ์ ์ ๊ฐ, ์ฆ ์์ ๊ฐ์ ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅํ ๊ฐ ์ด๋ค. ์ด์ ๋นํด ๊ฐ์ฒด ํ์ ์ ๊ฐ, ์ฆ ๊ฐ์ฒด๋ ๋ณ๊ฒฝ ๊ฐ๋ฅํ ๊ฐ์ด๋ค. ์์ ๊ฐ์ ๋ณ์์ ํ ๋นํ๋ฉด ๋ณ์์๋ ์ค์ ๊ฐ์ด ์ ์ฅ๋๋ค. ์ด์ ๋นํด ๊ฐ์ฒด๋ฅผ ๋ณ์์ ํ ๋นํ๋ฉด ๋ณ์์๋ ์ฐธ์กฐ๊ฐ์ด ์ ์ฅ๋๋ค. ์์๊ฐ์ ๊ฐ๋ ๋ณ์๋ฅผ ๋ค๋ฅธ ๋ณ์์ ํ ๋นํ๋ฉด ์๋ณธ์ ์์ ๊ฐ์ด ๋ณต์ฌ๋์ด ์ ๋ฌ๋๋ค. ์ด๋ฅผ ๊ฐ์ ์ํ ์ ๋ฌ ์ด๋ผ ํ๋ค. ์ด์ ๋นํด ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํค๋ ๋ณ์๋ฅผ ๋ค๋ฅธ ๋ณ์์ ํ ๋นํ๋ฉด ์๋ณธ์ ์ฐธ์กฐ๊ฐ์ด ๋ณต์ฌ๋์ด ์ ๋ฌ๋๋ค. ์ด๋ฅผ ์ฐธ์กฐ์ ์ํ ์ ๋ฌ ์ด๋ผ ํ๋ค. ๐ก ์์ ํ์ ๊ณผ ์ฐธ์กฐ ํ์ ์ ์ฐจ์ด์ ์ ์์ํ์ ์ ๋ถ๋ณ์ฑ์ ๊ฐ๊ณ ์๋ค๋ ๊ฒ์ด๊ณ ๊น์ ๋ณต์ฌ (์์ ํ์ ) ์ ์์ ๋ณต์ฌ ( ์ฐธ์กฐ ํ์ ) ์ ์ฐจ์ด์ ์ ๊น์ ๋ณต์ฌ๋ ๊ฐ์ ๋ณต์ฌํ๊ณ ์์๋ณต..
๊ฐ์ฒด ์๋ฐ์คํฌ๋ฆฝํธ๋ ๊ฐ์ฒด ๊ธฐ๋ฐ์ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ด๋ฉฐ, ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๊ตฌ์ฑํ๋ ๊ฑฐ์ ๋ชจ๋ ๊ฒ์ด ๊ฐ์ฒด ์ด๋ค. ๐ ์์๊ฐ์ ์ ์ธํ ๋๋จธ์ง ๊ฐ(ํจ์,๋ฐฐ์ด,์ ๊ท ํํ์ ๋ฑ)์ ๋ชจ๋ ๊ฐ์ฒด๋ค. ๊ฐ์ฒด๋ ํ๋กํผํฐ(๊ฐ์ฒด์ ์ํ๋ฅผ ๋ํ๋ด๋ ๊ฐdata) ์ ๋ฉ์๋(ํ๋กํผํฐ๋ฅผ ์ฐธ์กฐํ๊ณ ์กฐ์ํ ์ ์๋ ๋์)๋ก ๊ตฌ์ฑ๋ ์งํฉ์ฒด ์ด๋ค. ํ๋กํผํฐ ๊ฐ์ฒด๋ ํ๋กํผํฐ์ ์งํฉ์ด๋ฉฐ, ํ๋กํผํฐ๋ ํค(๋น ๋ฌธ์์ด์ ํฌํจํ๋ ๋ชจ๋ ๋ฌธ์์ด ๋๋ ์ฌ๋ฒ ๊ฐ)์ ๊ฐ(์๋ฐ์คํฌ๋ฆฝํธ์์ ์ฌ์ฉํ ์ ์๋ ๋ชจ๋ ๊ฐ) ์ผ๋ก ๊ตฌ์ฑ ๋๋ค. let person = { // ํ๋กํผํฐ ํค๋ name , ํ๋กํผํฐ ๊ฐ์ 'Lee' name: 'Lee', // ํ๋กํผํฐ ํค๋ age , ๊ฐ์ 20 age: 20 }; // {name: 'Lee' , age: 20} ๋ฉ์๋ ํ๋กํผํฐ ๊ฐ์ด..
๋ ผ๋ฆฌ๊ณฑ( && ) ์ฐ์ฐ์ 'cat' && 'dog' // "dog" ๋ ผ๋ฆฌ๊ณฑ(&&) ์ฐ์ฐ์๋ ๋๊ฐ์ ํผ์ฐ์ฐ์๊ฐ ๋ชจ๋ true๋ก ํ๊ฐ๋ ๋ true๋ฅผ ๋ฐํํ๋ค. ๋ ผ๋ฆฌ๊ณฑ ์ฐ์ฐ์๋ ์ขํญ์์ ์ฐํญ์ผ๋ก ํ๊ฐ๊ฐ ์งํ๋๋ค. ์ฒซ๋ฒ์งธ ํผ์ฐ์ฐ์ 'cat'์ Truthy ๊ฐ์ด๋ฏ๋ก true๋ก ํ๊ฐ๋๋ค. ํ์ง๋ง ๋๋ฒ์งธ ํผ์ฐ์ฐ์๊ฐ ์ ๋ ผ๋ฆฌ๊ณฑ ์ฐ์ฐ์ ํํ์์ ํ๊ฐ ๊ฒฐ๊ณผ๋ฅผ ๊ฒฐ์ ํ๋ค. ์ด๋ ๋ ผ๋ฆฌ๊ณฑ ์ฐ์ฐ์๋ ๋ ผ๋ฆฌ ์ฐ์ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๊ฒฐ์ ํ๋ ๋๋ฒ์งธ ํผ์ฐ์ฐ์, ์ฆ ๋ฌธ์์ด 'dog'๋ฅผ ๊ทธ๋๋ก ๋ฐํํ๋ค. ๋ ผ๋ฆฌํฉ( || ) ์ฐ์ฐ์ 'cat' || 'dog' // "cat" ๋ ผ๋ฆฌํฉ( || ) ์ฐ์ฐ์๋ ๋๊ฐ์ ํผ์ฐ์ฐ์ ์ค ํ๋๋ง true๋ก ํ๊ฐ๋์ด๋ true๋ฅผ ๋ฐํํ๋ค. ๋ ผ๋ฆฌํฉ ์ฐ์ฐ์๋ ์ขํญ์์ ์ฐํญ์ผ๋ก ํ๊ฐ๊ฐ ์งํ๋๋ค. ์ฒซ๋ฒ์งธ ํผ์ฐ์ฐ์ 'cat'์ Tr..
๊ฐ๋ฐ์๊ฐ ์๋์ ์ผ๋ก ๊ฐ์ ํ์ ์ ๋ณํ ํ๋๊ฒ์ ๋ช ์์ ํ์ ๋ณํ ๋๋ ํ์ ์บ์คํ ์ด๋ผ ํ๋ค. let x = 10; // ๋ช ์์ ํ์ ๋ณํ // ์ซ์๋ฅผ ๋ฌธ์์ด๋ก ํ์ ์บ์คํ ํ๋ค. let str = x.toString(); console.log(typeof x,x) // number 10 ๊ฐ๋ฐ์์ ์๋์๋ ์๊ด์์ด ํํ์์ ํ๊ฐํ๋ ๋์ค์ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ์ํด ์๋ฌต์ ์ผ๋ก ํ์ ์ด ์๋๋ณํ ๋๋๊ฒ์ ์๋ฌต์ ํ์ ๋ณํ ๋๋ ํ์ ๊ฐ์ ๋ณํ ์ด๋ผ ํ๋ค. let x = 10; // ์๋ฌต์ ํ์ ๋ณํ // ๋ฌธ์์ด ์ฐ๊ฒฐ ์ฐ์ฐ์๋ ์ซ์ ํ์ x์ ๊ฐ์ ๋ฐํ์ผ๋ก ์๋ก์ด ๋ฌธ์์ด์ ์์ฑํ๋ค. let str = x + ''; console.log(typeof str,str); // string 10 //x ๋ณ์์ ๊ฐ์ด ๋ณ๊ฒฝ๋ ..
๐ฃ if ... else ๋ฌธ if ... else ๋ฌธ์ ์ฃผ์ด์ง ์กฐ๊ฑด์ (๋ถ๋ฆฌ์ธ ๊ฐ์ผ๋ก ํ๊ฐ๋ ์ ์๋ ํํ์)์ ํ๊ฐ ๊ฒฐ๊ณผ, ์ฆ ๋ ผ๋ฆฌ์ ์ฐธ ๋๋ ๊ฑฐ์ง์ ๋ฐ๋ผ ์คํํ ์ฝ๋ ๋ธ๋ก์ ๊ฒฐ์ ํ๋ค. โ๏ธ ์กฐ๊ฑด์์ ํ๊ฐ ๊ฒฐ๊ณผ๊ฐ true์ผ ๊ฒฝ์ฐ if ๋ฌธ์ ์ฝ๋ ๋ธ๋ก์ด ์คํ๋๊ณ , false์ผ ๊ฒฝ์ฐ else ๋ฌธ์ ์ฝ๋ ๋ธ๋ก์ด ์คํ๋๋ค. if (์กฐ๊ฑด์) { // ์กฐ๊ฑด์์ด ์ฐธ์ด๋ฉด ์ด ์ฝ๋๋ธ๋ก์ด ์คํ๋๋ค. } else { // ์กฐ๊ฑด์์ด ๊ฑฐ์ง์ด๋ฉด ์ด ์ฝ๋๋ธ๋ก์ด ์คํ๋๋ค. } ๐ฃ else if ๋ฌธ else if ๋ฌธ๊ณผ else ๋ฌธ์ ์ต์ ์ด๋ค. ์ฆ, ์ฌ์ฉํ ์๋ ์๊ณ ์ฌ์ฉํ์ง ์์์๋ ์๋ค. if ๋ฌธ๊ณผ else ๋ฌธ์ 2๋ฒ ์ด์ ์ฌ์ฉํ ์ ์์ง๋ง else if ๋ฌธ์ ์ฌ๋ฌ๋ฒ ์ฌ์ฉํ ์ ์๋ค. if (์กฐ๊ฑด์1) { // ์กฐ๊ฑด์1์ด ์ฐธ์ด๋ฉด ์ด ์ฝ..