๐Ÿชด ์„ฑ์žฅ์ผ์ง€

์ฑ… ํ–‰๋ณตํ•œ ์ด๊ธฐ์ฃผ์˜์ž(์›จ์ธ ๋‹ค์ด์–ด)์˜ ๋‚ด์šฉ์— ์ž๊ทน๋ฐ›์•„ ์‹œ์ž‘ํ•˜๋Š” ์†Œ๋ฐ•ํ•œ ์„ฑ์žฅ๊ธฐ๋ก

์‚ด์•„์žˆ๋Š” ๊ฝƒ๊ณผ ์ฃฝ์€ ๊ฝƒ์€ ์–ด๋–ป๊ฒŒ ๊ตฌ๋ณ„ํ•˜๋Š”๊ฐ€?
์„ฑ์žฅํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ด ์‚ด์•„ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.
์ƒ๋ช…์˜ ์œ ์ผํ•œ ์ฆ๊ฑฐ๋Š” ์„ฑ์žฅ์ด๋‹ค!

๐ŸŒณ ํ‚ค์›Œ๋“œ ์ตœ๋Œ€ํ•œ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ •๋ฆฌ, ์ถ”ํ›„์— ๋ณด๋ฉด์„œ ์Šค์Šค๋กœ ์„ค๋ช…

JavaScript ๋ชจ๋“ˆ

๋ชจ๋“ˆ: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ฐœ๋ณ„์  ์š”์†Œ๋กœ์„œ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ ์กฐ๊ฐ, ์ผ๋ฐ˜์ ์œผ๋กœ ๊ธฐ๋Šฅ์„ ๊ธฐ์ค€์œผ๋กœ ํŒŒ์ผ ๋‹จ์œ„๋กœ ๋ถ„๋ฆฌ

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์ฃผ๋กœ ์›นํŽ˜์ด์ง€์˜ ๋ณด์กฐ๋กœ์„œ ํƒ„์ƒํ•œ ์–ธ์–ด์ด๊ธฐ ๋•Œ๋ฌธ์—, ์ผ๋ฐ˜์ ์œผ๋กœ ๋ชจ๋“ˆ ๊ธฐ๋Šฅ์„ ๊ฐ–๊ณ  ์žˆ๋Š” ์–ธ์–ด์™€ ๋‹ค๋ฅด๊ฒŒ ๋ชจ๋“ˆ ๊ธฐ๋Šฅ์ด ์กด์žฌํ•˜์ง€ ์•Š์•˜์Œ

๋ฌผ๋ก  ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„  <script>๋ฅผ ์ด์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ js ํŒŒ์ผ์„ ๋กœ๋“œํ•  ์ˆ˜๋Š” ์žˆ์ง€๋งŒ, ํŒŒ์ผ๋งˆ๋‹ค ๋…๋ฆฝ์ ์ธ ํŒŒ์ผ ์Šค์ฝ”ํ”„(๋ชจ๋“ˆ ์Šค์ฝ”ํ”„)๊ฐ€ ์—†์ด ๊ทธ๋ƒฅ ํ•˜๋‚˜์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์ฒ˜๋Ÿผ ์ž‘์šฉํ•จ
์ฆ‰, ์—„์—ฐํžˆ ๊ธฐ๋Šฅ์ ์œผ๋กœ ํŒŒ์ผ์ด ๊ตฌ๋ถ„๋˜์–ด์žˆ๊ณ  ๊ทธ ํŒŒ์ผ(๋ชจ๋“ˆ)์„ ๋ถˆ๋Ÿฌ์™€์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“ˆํ™”๊ฐ€ ์•„๋‹ˆ์—ˆ์Œ

ES6๋ชจ๋“ˆ(ESM)

ES6์—์„œ ์ถ”๊ฐ€ํ•œ ํด๋ผ์ด์–ธํŠธ ์‚ฌ์ด๋“œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ชจ๋“ˆ ๊ธฐ๋Šฅ

<script type="module" src="app.mjs"></script>

export

๋ชจ๋“ˆ ๋‚ด๋ถ€์—์„œ ์„ ์–ธํ•œ ๋ชจ๋“  ์‹๋ณ„์ž๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ํ•ด๋‹น ๋ชจ๋“ˆ ๋‚ด๋ถ€์—์„œ๋งŒ ์ฐธ์กฐ ๊ฐ€๋Šฅ
์™ธ๋ถ€์— ๊ณต๊ฐœํ•˜๊ธฐ ์œ„ํ•ด export ์‹๋ณ„์ž๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

// test_export.mjs ํŒŒ์ผ
export const TEST = 12345;

export function add(a, b) {
  return a + b;
}

import

๋ฐ˜๋Œ€๋กœ ๋‹ค๋ฅธ ๋ชจ๋“ˆ์—์„œ ๊ณต๊ฐœํ•œ ์‹๋ณ„์ž๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด import๋ฅผ ์‚ฌ์šฉ

import { TEST, add } from './test_export.mjs';

๋„คํŠธ์›Œํฌ ๊ธฐ๋ณธ ๊ทœ์น™

  • ํ”„๋กœํ† ์ฝœ: ๋„คํŠธ์›Œํฌ๋ผ๋ฆฌ ํ†ต์‹ ํ•˜๊ธฐ ์œ„ํ•ด ์ •ํ•ด๋†“์€ ๊ทœ์น™

  • OSI๋ชจ๋ธ(OSI 7๊ณ„์ธต): ๋„คํŠธ์›Œํฌ๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๊ธฐ ์œ„ํ•œ ํ‘œ์ค€ ํ†ต์‹  ๊ทœ๊ฒฉ

    • ์‘์šฉ ๊ณ„์ธต(7)
    • ํ‘œํ˜„ ๊ณ„์ธต(6)
    • ์„ธ์…˜ ๊ณ„์ธต(5)
    • ์ „์†ก ๊ณ„์ธต(4)
    • ๋„คํŠธ์›Œํฌ ๊ณ„์ธต(3)
    • ๋ฐ์ดํ„ฐ ๋งํฌ ๊ณ„์ธต(2)
    • ๋ฌผ๋ฆฌ ๊ณ„์ธต(1)
  • TCP/IP๋ชจ๋ธ(TCP/IP 4๊ณ„์ธต): OSI 7๊ณ„์ธต์„ 4๊ณ„์ธต์œผ๋กœ ๊ฐ„๋‹จํ™”ํ•œ ๊ทœ๊ฒฉ

    • ์‘์šฉ ๊ณ„์ธต(4): OSI์—์„œ ์‘์šฉ, ํ‘œํ˜„, ์„ธ์…˜
    • ์ „์†ก ๊ณ„์ธต(3): OSI์—์„œ ์ „์†ก
    • ์ธํ„ฐ๋„ท ๊ณ„์ธต(2): OSI์—์„œ ๋„คํŠธ์›Œํฌ
    • ๋„คํŠธ์›Œํฌ ์ ‘์† ๊ณ„์ธต(1): OSI์—์„œ ๋ฐ์ดํ„ฐ ๋งํฌ, ๋ฌผ๋ฆฌ
  • ์บก์Šํ™”: OSI 7๊ณ„์ธต์—์„œ ํ‘œํ˜„, ์„ธ์…˜ ๊ณ„์ธต์„ ์‘์šฉ ๊ณ„์ธต์— ํฌํ•จํ•˜์—ฌ ์ƒ๊ฐํ–ˆ์„ ๋•Œ, ์•„๋ž˜์˜ ๊ณผ์ •์„ ์บก์Šํ™”๋ผ๊ณ  ํ•œ๋‹ค.


    ์‘์šฉ ๊ณ„์ธต(๋ฐ์ดํ„ฐ ์ „์†ก) ->
    ์ „์†ก ๊ณ„์ธต((์ „์†ก)ํ—ค๋” + ๋ฐ์ดํ„ฐ ์ „์†ก) ->
    ๋„คํŠธ์›Œํฌ ๊ณ„์ธต((๋„คํŠธ์›Œํฌ)ํ—ค๋” + (์ „์†ก)ํ—ค๋” + ๋ฐ์ดํ„ฐ ์ „์†ก) ->
    ๋ฐ์ดํ„ฐ๋งํฌ ๊ณ„์ธต((๋„คํŠธ์›Œํฌ ์ ‘์†)ํ—ค๋” + (์ธํ„ฐ๋„ท)ํ—ค๋” + (์ „์†ก)ํ—ค๋” + ๋ฐ์ดํ„ฐ + ํŠธ๋ ˆ์ผ๋Ÿฌ ์ „์†ก) ->
    ๋ฌผ๋ฆฌ ๊ณ„์ธต(์ „๊ธฐ์  ์‹ ํ˜ธ๋กœ ์ˆ˜์‹  ์ธก์— ์ „์†ก)


์œ„ ๊ณผ์ •์ด ๊ฑฐ๊พธ๋กœ ์ˆ˜์‹  ์ธก์—์„œ ๊ฑฐ๊พธ๋กœ ์ธต์„ ์˜ฌ๋ผ๊ฐ€๋ฉฐ ํ—ค๋”๋ฅผ ํ•ด์ฒดํ•˜๋Š” ์ž‘์—…์€ ์—ญ์บก์Šํ™”

JavaScript ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ๊ณผ ํ•จ์ˆ˜ ๋ฆฌํ„ฐ๋Ÿด ๊ตฌ๋ถ„

ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ์€ ๊ฐ’์ด ์•„๋‹Œ ๋ฌธ์ด๋‹ค! ์ฆ‰, ํ‘œํ˜„์‹์ด ์•„๋‹ˆ๋‹ค.

function add(a, b) {
  return a + b;
}

๊ทธ๋Ÿฐ๋ฐ ํ•จ์ˆ˜๋ฅผ ์ด๋Ÿฐ ์‹์œผ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

var add = function addMaker(a, b) {
  return a + b;
};

ํ โ€ฆ ์• ๋งคํ•˜๋‹ค. ํ•จ์ˆ˜ ํ‘œํ˜„์‹ ๊ฐ™์ด ์ƒ๊ฒผ๋Š”๋ฐ, ๋’ค์—๋Š” ์ต๋ช…์ด ์•„๋‹Œ ๊ธฐ๋ช…์œผ๋กœ ๋งˆ์น˜ ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ์„ ๋ณ€์ˆ˜ add์— ํ• ๋‹นํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ธ๋‹ค.
๊ทผ๋ฐ ์œ„์— ์‹์€ ๋ถ„๋ช…ํžˆ ์ž‘๋™ํ•˜๊ณ , ๊ทธ๋ ‡๋‹ค๋Š” ๊ฒƒ์€ ์šฐ๋ณ€์ด ๊ฐ’์œผ๋กœ ์ž‘์šฉํ•˜์—ฌ ๋ณ€์ˆ˜์— ํ• ๋‹น๋œ ๊ฒŒ ์•„๋‹๊นŒ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๋‹ค.
์œ„์™€ ๊ฐ™์€ ์ƒํ™ฉ์—์„œ ์šฐ๋ณ€์€ (๋ชจ์–‘์€ ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ๊ณผ ๊ฐ™์ง€๋งŒ) ํ•จ์ˆ˜ ๋ฆฌํ„ฐ๋Ÿด๋กœ ํ•ด์„๋œ๋‹ค.
์ฆ‰, ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ์œผ๋กœ์„œ ํ•ด์„๋˜๋Š” ๊ฒŒ ์•„๋‹Œ ํ•จ์ˆ˜ ๋ฆฌํ„ฐ๋Ÿด๋กœ์„œ ํ•ด์„๋˜๋Š” ํ‘œํ˜„์‹์ธ ๊ฒƒ์ด๋‹ค.

{}๋„ ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋ธ”๋ก๋ฌธ ํ˜น์€ ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด๋กœ ํ•ด์„๋  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๊ณผ ์œ ์‚ฌ!

(function test() {
  console.log('()์•ˆ์— ์žˆ๋Š” ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ ๋ชจ์–‘์€ ํ•จ์ˆ˜ ๋ฆฌํ„ฐ๋Ÿด๋กœ ํ•ด์„๋ฉ๋‹ˆ๋‹ค.');
});
test(); // ReferenceError: test is not defined -> ํ•จ์ˆ˜๊ฐ€ ์„ ์–ธ๋˜์ง€ ์•Š์Œ

/* ํ•จ์ˆ˜ ๋ฆฌํ„ฐ๋Ÿด์ด๊ธฐ์— ์ฆ‰์‹œ ์‹คํ–‰ ํ•จ์ˆ˜๊ฐ€ ์•„๋ž˜์™€ ๊ฐ™์€ ๋ชจ์–‘์œผ๋กœ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๊ฒƒ
()์•ˆ์—์„œ์˜ ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ ๋ชจ์–‘์€ ํ•จ์ˆ˜ ๋ฆฌํ„ฐ๋Ÿด์ด๊ธฐ์— ๊ทธ ๋’ค์— ๋ฐ”๋กœ ()๋ฅผ ๋ถ™์—ฌ์„œ ์‹คํ–‰ํ•ด๋„ } ๋’ค์— ;๊ฐ€ ์ž๋™์œผ๋กœ ๋ถ™์ง€ ์•Š๋Š”๋‹ค. */
(function test() {
  console.log('()์•ˆ์— ์žˆ๋Š” ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ ๋ชจ์–‘์€ ํ•จ์ˆ˜ ๋ฆฌํ„ฐ๋Ÿด๋กœ ํ•ด์„๋ฉ๋‹ˆ๋‹ค.');
})();