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]