FE/JavaScript
[JavaScript] ์คํ ์ปจํ ์คํธ(execution context)
๋ค์ด๊ฐ๊ธฐ ์ ์คํ ์ปจํ ์คํธ๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋์ ์๋ฆฌ๋ฅผ ๋ด๊ณ ์๋ ํต์ฌ ์๋ฆฌ์ด๋ค.๋ฐ๋ผ์ ์คํ์ปจํ ์คํธ๋ ์๋ ๊ฐ๋ ๋ค์ ๋์์๋ฆฌ๋ฅผ ๋ด๊ณ ์๋ค.- ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ์ค์ฝํ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์๋ณ์์ ์๋ณ์์ ๋ฐ์ธ๋ฉ๋ ๊ฐ์ ๊ด๋ฆฌํ๋ ๋ฐฉ์- ํธ์ด์คํ ์ด ๋ฐ์ํ๋ ์ด์ - ํด๋ก์ ์ ๋์ ๋ฐฉ์- ํ์คํ ํ์ ํจ๊ป ๋์ํ๋ ์ด๋ฒคํธ ํธ๋ค๋ฌ์ ๋น๋๊ธฐ ์ฒ๋ฆฌ์ ๋์ ๋ฐฉ์์คํ ์ปจํ ์คํธ๋?์คํ ์ปจํ ์คํธ๋ ์์ค์ฝ๋๋ฅผ ์คํํ๋ ๋ฐ ํ์ํ ํ๊ฒฝ ์ ๋ณด๋ฅผ ๋ชจ์๋์ ๊ฐ์ฒด์ด๋ค. ์ฆ, ์คํ ์ปจํ ์คํธ๋ ๋ณ์, ํจ์, ํด๋์ค ๋ฑ์ ์ด๋ฆ์ธ ์๋ณ์๋ฅผ ๋ฑ๋กํ๊ณ ๊ด๋ฆฌํ๋ ์ค์ฝํ๋ผ๋ ํ๊ฒฝ ์ ๋ณด๋ฅผ ๊ตฌ์ฑํ๊ณ , ์ปจํ ์คํธ๋ฅผ ์ฝ ์คํ์ ์์์ฌ๋ ค ๊ฐ์ฅ ์์ ์๋ ์ปจํ ์คํธ๋ฅผ ์คํํ์ฌ ์ฝ๋์ ์คํ์์๋ฅผ ๋ณด์ฅํ๋ค.์คํ ์ปจํ ์คํธ๊ฐ ์์ฑ๋๋ ์์ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ด ์คํฌ๋ฆฝํธ๋ฅผ ์ฒ์ ์คํํ ๋..
[JavaScript] ๋ณ์์ ์ฌํ ๋น ๊ณผ์
๋ณ์์๋ ๋ฉ๋ชจ๋ฆฌ์ ์ฃผ์๊ฐ ์ ์ฅ๋์ด ์๋ค. ๊ทธ๋ฌ๋๊น, ํน์ ๊ฐ์ด ์ ์ฅ๋์ด ์๋ ๊ฒ์ด ์๋, ํน์ ๊ฐ์ด ์ ์ฅ๋์ด ์๋ ๋ฉ๋ชจ๋ฆฌ์ ์ฃผ์๋ฅผ ๊ฐ์ง๊ณ ์๋ ๊ฒ์ด๋ค. ๋ณ์์ ๊ฐ์ด ์ฌํ ๋น๋ ๋ ํด๋น ๊ฐ์ด ์คํ์ ์กด์ฌํ๋ฉด ๊ทธ ์คํ ์ฃผ์๋ก ํ ๋น๋๋ค๋ ๋ด์ฉ์ ๋ณธ ๊ฒ ๊ฐ์๋ฐ, ๊ฐ์ด ๊ฐ๋๋ผ๋ ๋ค๋ฅธ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์์ ๊ฐ์ด ์ ์ฅ๋๋ ์ค ์์๋๋ฐ ๊ทธ๊ฒ ์๋์ด์ ์ข ๋ ์ ํํ๊ฒ ๊ณต๋ถํด์ ์ ๋ฆฌํด๋ณด๋ ค๊ณ ํ๋ค.๋ณ์์ ์ข ๋ฅ์ ๋ฐ๋ผ ์ ์ฅ๋๋ ์์น๊ฐ ๋ค๋ฅด๋ค.๋ฉ๋ชจ๋ฆฌ๋ 4๊ฐ์ ์์ญ์ด ์๊ณ , ์ ์ญ๋ณ์, ์ง์ญ๋ณ์, ์ฝ๋, ๋์ ํ ํ ๋น์ ๋ฐ๋ผ ์ ์ฅ๋๋ ์์น๊ฐ ๋ค๋ฅด๋ค.์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ํ์์ญ๊ณผ ์ฝ์คํ์ ์ฌ์ฉํ๋ค.์ฝ์คํ์์ ํ์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ค.๋ณ์์ ์ ์ฅ๋๋ ๊ฒ : ์ฝ์คํ์ ์ฃผ์ ๋ฉ๋ชจ๋ฆฌ ํ(heap ์์ญ)์ฐธ์กฐ ํ์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ค. (๋ฐฐ์ด, ๊ฐ์ฒด, ํจ์ ๋ฑ)..
[JavaScript] ์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ์์ด ๋ฐ๋ณต ๋ฉ์๋ repeat()
โ๏ธ repeat() ์์ฝํน์ ๋ฌธ์์ด์ ์ํ๋๋งํผ ๋ฐ๋ณตํ ๋ฌธ์์ด์ ์ป๊ณ ์ถ์ ๋ ์ฌ์ฉ.โ๏ธ repeat() ๊ธฐ๋ณธํstring.repeat(count);string : ๋ฌธ์์ด์ด ์ ์ฅ๋ string ๋ณ์count : ๋ฐ๋ณตํ ํ์โ๏ธ repeat() ์ฌ์ฉ๋ฒstr = 'abc';console.log(str.repeat(3)); // abcabcabc ์ถ๋ ฅ
[JavaScript] ์๋ฐ์คํฌ๋ฆฝํธ ์ต๋/์ต์ ์ ์๊ฐ MAX_SAFE_INTEGER/MIN_SAFE_INTEGER
โ๏ธ Number.MAX_SAFE_INTEGER() / Number.MIN_SAFE_INTEGER() ์์ฝNumber.MAX_SAFE_INTEGER() : ์๋ฐ์คํฌ๋ฆฝํธ์์ ์์ ํ ์ต๋ ์ ์ ๊ฐNumber.MIN_SAFE_INTEGER() : ์๋ฐ์คํฌ๋ฆฝํธ์์ ์์ ํ ์ต์ ์ ์ ๊ฐโ๏ธ Number.MAX_SAFE_INTEGER() / Number.MIN_SAFE_INTEGER() ์ฌ์ฉ๋ฒ// ์ต๋๊ฐ ์ค์ const max = Number.MAX_SAFE_INTEGER;// ์ต์๊ฐ ์ค์ const min = Number.MIN_SAFE_INTEGER;
[JavaScript] ์๋ฐ์คํฌ๋ฆฝํธ ์ ์์ธ์ง ํ์ธํ๋ Number.isInteger() ๋ฉ์๋
โ๏ธ Number.isInteger() ์์ฝ์ธ์๊ฐ ์ ์์ธ์ง ์๋์ง ํ๋จํ์ฌ ์ ์์ด๋ฉด true๋ฅผ, ์ ์๊ฐ ์๋๋ฉด false๋ฅผ ๋ฐํํ๋ ๋ฉ์๋โ๏ธ Number.isInteger() ๊ธฐ๋ณธํNumber.isInteger(value);Value : ์ ์์ธ์ง ํ์ธํ๋ ค๋ ๊ฐ๋ฐํ๊ฐ : ์ฃผ์ด์ง ๊ฐ์ ์ ์ ์ฌ๋ถ๋ฅผ ๋ํ๋ด๋ Boolean๊ฐโ๏ธ Number.isInteger() ์ฌ์ฉ๋ฒNumber.isInteger(0); // trueNumber.isInteger(-100); // trueNumber.isInteger(0.25); // falseNumber.isInteger("๋ฌธ์์ด"); // falseNumber.isInteger(true); // falseNumber.isInteger(Infinity); // false
[JavaScript] ์๋ฐ์คํฌ๋ฆฝํธ ๋์๋ฌธ์ ๋ณ๊ฒฝํ๊ธฐ toUpperCase(), toLowerCase()
โ๏ธ toUpperCase(), toLowerCase() ์์ฝ์์ด๋ก ์ด๋ฃจ์ด์ง ๋ฌธ์์ด์์ ๋๋ฌธ์๋ฅผ ์๋ฌธ์๋ก, ์๋ฌธ์๋ฅผ ๋๋ฌธ์๋ก ๋ฐ๊พธ๊ณ ์ถ์ ๋ ์ฌ์ฉํจ.โ๏ธ toUpperCase(), toLowerCase() ์ฌ์ฉ๋ฒconst str = "AbCdE";// ์๋ฌธ์๋ฅผ ๋๋ฌธ์๋ก ๋ฐ๊ฟ ๋const upperStr = str.toUpperCase(); // "ABCDE"// ๋๋ฌธ์๋ฅผ ์๋ฌธ์๋ก ๋ฐ๊ฟ ๋const lowerStr = str.toLowerCase(); // "abcde"
[JavaScript] ์๋ฐ์คํฌ๋ฆฝํธ String includes ๋ฉ์๋
โ๏ธ includes() ์์ฝ ๋ฌธ์์ด์ ํน์ ๋ฌธ์์ด์ด ํฌํจ๋์ด ์๋์ง ํ์ธํ๋ ๋ฉ์๋ ํฌํจ๋์ด ์์ ๋ โก๏ธ true ๋ฐํ ํฌํจ๋์ด ์์ง ์์ ๋ โก๏ธ false ๋ฐํ โ๏ธ includes() ๊ธฐ๋ณธํ ํ์ธ ๋ฌธ์์ด.includes(ํน์ ๋ฌธ์์ด, ์ฐพ์ ์์ ์์น) ํ์ธ ๋ฌธ์์ด(String) : String ์๋ฃํ์ ๋ฌธ์์ด์ ๋ณ์๋ช ์ด ๋ค์ด๊ฐ ํน์ ๋ฌธ์์ด(String) : ํฌํจ๋์ด์๋์ง ํ์ธํ๊ณ ์ถ์ ๋ฌธ์์ด์ ๋ฃ์ด์ค ์ฐพ์ ์์ ์์น(Number) : ํ์ธ ๋ฌธ์์ด์์ ์ด๋ ์์น์์๋ถํฐ ํน์ ๋ฌธ์์ด์ด ์๋ ์ง ํ์ธํ๊ณ ์ถ์ ๋ ์ฌ์ฉ, ๊ธฐ๋ณธ๊ฐ์ 0 โ๏ธ includes() ์ฌ์ฉ์์ str = "abcde"; str.includes("a"); // ๊ฒฐ๊ณผ๊ฐ : true str.includes("f"); // ๊ฒฐ๊ณผ๊ฐ : ..
[JavaScript] ์ต๋๊ฐ, ์ต์๊ฐ ๊ตฌํ๊ธฐ (Math.max / Math.min)
โ๏ธ Math.max(), Math.min() ์์ฝ Math.min([์ซ์์งํฉ]); // ๊ฐ์ฅ ์์ ๊ฐ ๋ฐํ Math.max([์ซ์์งํฉ]); // ๊ฐ์ฅ ํฐ ๊ฐ ๋ฐํ Math.min()์ ์ซ์ ์งํฉ ์ค ๊ฐ์ฅ ์์ ์๋ฅผ ๋ฐํ. Math.max()๋ ์ซ์ ์งํฉ ์ค ๊ฐ์ฅ ํฐ ์๋ฅผ ๋ฐํ. โ๏ธ Math.max(), Math.min() ์์ Math.min(0, 2, 1, 5); // 0 ๋ฐํ Math.max(0, 2, 1, 5); // 5 ๋ฐํ ๐ค ์ซ์ ์งํฉ์ด Array์ ๋ค์ด์๋ค๋ฉด ์ด๋ป๊ฒ ํด์ผํ ๊น? const nums = [0, 1, 2, 5]; const num1 = Math.min(...nums); const num2 = Math.max(...nums); ์คํ๋ ๋ ๋ฌธ๋ฒ์ ์ฌ์ฉํ์ฌ ์์๋ฅผ ๋ถ๋ฆฌํด์ค๋ค!
[JavaScript] ์๋ฐ์คํฌ๋ฆฝํธ slice ๋ฉ์๋
โ๏ธ slice() ์์ฝ ๋ฐฐ์ด์์ ํน์ ๊ตฌ๊ฐ์ ์ถ์ถํ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ค. ์๋ณธ์ด ์์ ๋์ง ์๊ณ ์ถ์ถ๋ ๋ถ๋ถ๋ง ๋ฐํ๋๋ค. ์์๊ณผ ๋ ๋ถ๋ถ์ ์ง์ ํ ์ ์๋ค. โ๏ธ slice() ๊ธฐ๋ณธํ arr.slice(start, end) // start ์ธ๋ฑ์ค๋ถํฐ end-1 ์ธ๋ฑ์ค๊น์ง์ ๊ตฌ๊ฐ ์ถ์ถ start (ํ์) : ์ถ์ถํ ๊ตฌ๊ฐ์ ์์ ์ธ๋ฑ์ค end (์ ํ) : ์ถ์ถํ ๊ตฌ๊ฐ์ ๋ง์ง๋ง ์ธ๋ฑ์ค(ํฌํจํ์ง ์์ -> end-1 ์ธ๋ฑ์ค๊น์ง ์ถ์ถ) โ๏ธ slice() ์์ arr = [1, 2, 3, 4, 5]; arr.slice(2, 4); // ๊ฒฐ๊ณผ : [3, 4]