2023. 7. 25. 14:54ใ2. JS๋ฌธ๋ฒ ์ข ํฉ
- 1-1๊ฐ JS์ ์ญ์ฌ
1995๋ ์๋ฐ์คํฌ๋ฆฝํธ ํ์ : ๋ท์ค์ผ์ดํ ์ปค๋ฎค๋์ผ์ด์ (LiveScript → Javascript)
2005๋ AJAX ๋ฑ์ฅ (js๊ธฐ๋ฐ) javascript ์ฌ์ฉ์๊ฐ ๋์ด๋๊ฒ๋จ.
- as is : ๋ฒํผ์ ๋๋ฅด๋ฉด ์นํ์ด์ง ์ ์ฒด๊ฐ ์๋ก๊ณ ์นจ
- to be : ๋ฒํผ์ ๋๋ฅด๋ฉด ํด๋นํ๋ ์์ญ๋ง ์๋ก๊ณ ์นจ
-> UXํฅ์์ผ๋ก javascript ์ฌ์ฉ์ ์ฆ๊ฐ
2009๋ Node.js ๋ฑ์ฅ, ์๋ฒ ๊ฐ๋ฐ ํ์ฑํ
- ํ๋์ ์ธ์ด → FrontEnd + BackEnd + DB(MongoDB) = FullStack
- 1-2๊ฐ ๋ณ์์์์
๋ณ์๋?
๊ธฐ์ตํ๊ณ ์ถ์ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ๊ณ , ์ ์ฅ๋ ๊ฐ์ ์ฝ์ด ๋ค์ฌ ์ฌ์ฌ์ฉ ํ๊ธฐ ์ํ ๋งค์ปค๋์ฆ.
- [ ๋ณ์์ 5๊ฐ์ง ์ฃผ์๊ฐ๋ ]
- ๋ณ์ ์ด๋ฆ : ์ ์ฅ๋ ๊ฐ์ ๊ณ ์ ์ด๋ฆ
- ๋ณ์ ๊ฐ : ๋ณ์์ ์ ์ฅ๋ ๊ฐ
- ๋ณ์ ํ ๋น : ๋ณ์์ ๊ฐ์ ์ ์ฅํ๋ ํ์
- ๋ณ์ ์ ์ธ : ๋ณ์๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ์ปดํจํฐ์ ์๋ฆฌ๋ ํ์
- ๋ณ์ ์ฐธ์กฐ : ๋ณ์์ ํ ๋น๋ ๊ฐ์ ์ฝ์ด์ค๋๊ฒ
* ์๋ฐ์คํฌ๋ฆฝํธ์์ ๋ณ์๋ var, let, const ์ธ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ์ ์ธํ ์ ์์ต๋๋ค.
// var๋ก ๋ณ์ ์ ์ธ
var myVar = "Hello World";
console.log(myVar); // "Hello World"
// let์ผ๋ก ๋ณ์ ์ ์ธ
let myLet = "Hello World";
console.log(myLet); // "Hello World"
// const๋ก ์์ ์ ์ธ
const myConst = "Hello World";
console.log(myConst); // "Hello World"
var : ์ ์ธํ๊ฒ๋ ํ๋ฒ๋ ์ ์ธ๊ฐ๋ฅ (๋ง์ง๋ง ์ ์ธํ ๊ฐ์ผ๋ก ๋ณ์๊ฐ ๋ฎ์ด์์์ง๋ค.)
var / let : ๋ค๋ฅธ๊ฐ์ ํ ๋นํ๋๋ผ๋ ์ฌํ ๋น์ด ๊ฐ๋ฅํ๋ค.
// var๋ก ๋ณ์ ๋ฎ์ด์ฐ๊ธฐ
var myVar = "Hello";
var myVar = "World";
console.log(myVar); // "World"
// let์ผ๋ก ๋ณ์ ๋ฎ์ด์ฐ๊ธฐ
let myLet = "Hello";
myLet = "World"; // ๊ธฐ์กด ๊ฐ์ ๋ฎ์ด์ฐ๊ธฐ
console.log(myLet); // "World"
// const๋ก ์์ ์ ์ธ ํ ๊ฐ ๋ณ๊ฒฝํ๊ธฐ
const myConst = "Hello";
myConst = "World"; // ์ค๋ฅ ๋ฐ์
console.log(myConst);
- 1-3(4๊ฐ) ๋ฐ์ดํฐ ํ์
Runtime (runํ๋ time) ์ฝ๋๋ฅผ ์์ฑํ ๋๊ฐ ์๋, ์ค์ ์ฝ๋๊ฐ ์คํ๋ ๋ : ํฐ๋ฏธ๋ ์ฝ๋๊ฐ ์คํ๋ ๋ ๋ฐ์ดํฐ ํ์ ์ด ๊ฒฐ์ ๋๋๊ฒ์ ๋งํจ.
[1] ๋ฐ์ดํฐํ์
1) ์ซ์(Number)
a. ์ ์ํ ์ซ์(Integer)
let num1 = 10;
console.log(num1); // 10
console.log(typeof num1); // "number"
b. ์ค์ํ ์ซ์(Float)
let num2 = 3.14;
console.log(num2); // 3.14
console.log(typeof num2); // "number"
c. ์ง์ํ ์ซ์(Exponential)
let num3 = 2.5e5; // 2.5 x 10^5
console.log(num3); // 250000
console.log(typeof num3); // "number"
d. NaN(Not a Number) : ์ซ์๊ฐ ์๋๊ฒ์ ๋ํ๋ด๋ ๊ฐ์ ์ซ์๋ก ๋ณํํ๋ ค๊ณ ํ ๋
let num4 = "Hello" / 2;
console.log(num4); // NaN
console.log(typeof num4); // "number"
e. Infinity
let num5 = 1 / 0;
console.log(num5); // Infinity
console.log(typeof num5); // "number"
let num6 = -1 / 0;
console.log(num6); // -Infinity
console.log(typeof num6); // "number"
2) ๋ฌธ์์ด(String) : ์์ ๋ฐ์ดํ(')๋ ํฐ ๋ฐ์ดํ(")๋ก ๊ฐ์ธ์ ํํํฉ๋๋ค.
let name = 'Alice';
let message = "Hello, world!";
(1) ๋ฌธ์์ด ๊ธธ์ด(length) ํ์ธํ๊ธฐ
let str = "Hello, world!";
console.log(str.length); // 13
(2) ๋ฌธ์์ด ๊ฒฐํฉ(concatenation)
let str1 = "Hello, ";
let str2 = "world!";
let result = str1.concat(str2);
console.log(result); // "Hello, world!"
(3) ๋ฌธ์์ด ์๋ฅด๊ธฐ(substr, slice)
let str = "Hello, world!";
console.log(str.substr(7, 5)); // "world" -> substr : from , length
console.log(str.slice(7, 12)); // "world" -> slice : start , undfined
(4) ๋ฌธ์์ด ๊ฒ์(search)
let str = "Hello, world!";
console.log(str.search("world")); // 7
(5) ๋ฌธ์์ด ๋์ฒด(replace)
let str = "Hello, world!";
let result = str.replace("world", "JavaScript");
console.log(result); // "Hello, JavaScript!"
(6) ๋ฌธ์์ด ๋ถํ (split)
let str = "apple, banana, kiwi";
let result = str.split(","); // -> ๊ดํธ ์์ ์๋ฅด๋ ๊ธฐ์ค์ ๋ฃ์ด์ค๋ค.
console.log(result); // ["apple", " banana", " kiwi"]
3) ๋ถ๋ฆฌ์ธ(Boolean) : ์ฐธ(true)๊ณผ ๊ฑฐ์ง(false)์ ๋ํ๋ด๋ ๋ฐ์ดํฐ ํ์
let bool1 = true;
console.log(bool1); // true
console.log(typeof bool1); // "boolean"
let bool2 = false;
console.log(bool2); // false
console.log(typeof bool2); // "boolean"
* ๋ถ๋ฆฌ์ธ ๋ฐ์ดํฐ ํ์ ์ ์กฐ๊ฑด๋ฌธ(if, else, switch ๋ฑ)๊ณผ ๋ ผ๋ฆฌ ์ฐ์ฐ์(&&, ||, !)์ ํจ๊ป ๋ง์ด ์ฌ์ฉ๋ฉ๋๋ค.
4)undefined : ๊ฐ์ด ํ ๋น๋์ง ์์ ๋ณ์
let x;
console.log(x); // undefined
5) null : null์ ๊ฐ์ด ์กด์ฌํ์ง ์์(๋ช ์์ ์ผ๋ก, ์ผ๋ถ๋ฌํ๊ธฐํ์ง์์)์ ์๋ฏธํฉ๋๋ค. undefined์๋ ๋ค๋ฆ
let y = null;
6) ๊ฐ์ฒด(Object) : ์ค๊ดํธ({})๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด๋ฅผ ์์ฑ (key - value pair)
let person = { name: 'Alice', age: 20 };// key์๋ ' ' ์๊ฐ์ ๋ฐ์ดํ ์์ด ๋ฌธ์ํํ๋ก ๋ค์ด๊ฐ๋ฉด ๋๋ค.
person.name // 'Alice'
person.age // 20
7) ๋ฐฐ์ด(Array) : ์ฌ๋ฌ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์์๋๋ก ์ ์ฅํ๋ ๋ฐ์ดํฐ ํ์ ์ ๋๋ค. ๋๊ดํธ([])๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐฐ์ด์ ์์ฑํฉ๋๋ค.
let person = { name: 'Alice', age: 20 };
person.name // 'Alice'
person.age // 20
- 1-5๊ฐ ํ ๋ณํ
(1) ์์์ ํ ๋ณํ(implicit coercion) : ์๋์ผ๋ก ์ํ๋๋ ํ ๋ณํ์ด๋ฉฐ, ์ผ๋ฐ์ ์ผ๋ก ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ ๋ ๋ฐ์ํฉ๋๋ค.
1) ๋ฌธ์์ด ๋ณํ : {}, null, undifined + "1" => ๋ฌธ์์ด
console.log(1 + "2"); // "12"
console.log("1" + true); // "1true"
console.log("1" + {}); // "1[object Object]"
console.log("1" + null); // "1null"
console.log("1" + undefined); // "1undefined"
// ๋ฌธ์์ด๊ณผ ๋ค๋ฅธ๋ฐ์ดํฐ ํ์
์ด ๋ง๋๋ฉด ๋ฌธ์์ด๋ก ๋ณํ๋๋ค.
2) ์ซ์ ๋ณํ
console.log(1 - "2"); // -1
console.log("2" * "3"); // 6
console.log(4 + +"5"); // 9
// ๋ํ๊ธฐ ์ฐ์ฐ์๊ฐ ์๋ ๋ค๋ฅธ ์ฐ์ฐ์๋ ์ซ์๋ณํ์ด ์ฐ์ ์ ๋๋ค.
// ์ด๋, ๋น ๋ฌธ์์ด("")์ด๋ ๊ณต๋ฐฑ ๋ฌธ์์ด(" ")์ 0์ผ๋ก ๋ณํ๋ฉ๋๋ค.
3) ๋ธ๋ฆฌ์ธ ๋ณํ :Boolean() ํจ์๋ฅผ ์ฌ์ฉ. ์ด๋, 0, ๋น ๋ฌธ์์ด(""), null, undefined, NaN์ false๋ก ๋ณํ๋ฉ๋๋ค. ๊ทธ ์ธ์ ๊ฐ์ true๋ก ๋ณํ๋ฉ๋๋ค.
console.log(Boolean(0)); // false
console.log(Boolean("")); // false
console.log(Boolean(null)); // false
console.log(Boolean(undefined)); // false
console.log(Boolean(NaN)); // false
console.log(Boolean("false")); // true
console.log(Boolean({})); // true
(2) ๋ช ์์ ํ ๋ณํ(explicit coercion) : ๊ฐ๋ฐ์๊ฐ ์ง์ ์๋ฃํ์ ๋ณํํ๋ ๊ฒ์ ๋งํฉ๋๋ค.
1) ๋ฌธ์์ด ๋ณํ : String() ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ์๋ฃํ์ ๋ฌธ์์ด๋ก ๋ณํ
console.log(String(123)); // "123"
console.log(String(true)); // "true"
console.log(String(false)); // "false"
console.log(String(null)); // "null"
console.log(String(undefined)); // "undefined"
console.log(String({})); // "[object Object]"
2) ์ซ์ ๋ณํ
console.log(Number("123")); // 123
console.log(Number("")); // 0
console.log(Number(" ")); // 0
console.log(Number(true)); // 1
console.log(Number(false)); // 0
- 1-6๊ฐ ์ฐ์ฐ์
(1) ์ฐ์ ์ฐ์ฐ์(arithmetic operators)
1) ๋ํ๊ธฐ ์ฐ์ฐ์(+)
console.log(2 + 3); // 5
console.log("2" + "3"); // "23"
console.log("2" + 3); // "23"
console.log(2 + "3"); // "23"
// ** ๋ํ๊ธฐ ์ฐ์ฐ์ง๋ ์ซ์+๋ฌธ์๋ฅผ ํจ๊ป์ฌ์ฉํ๋ฉด ์๋์ผ๋ก ๋ฌธ์์ด๋ก ๋ณํ
2) ๋นผ๊ธฐ ์ฐ์ฐ์(-)
console.log(5 - 2); // 3
console.log("5" - "2"); // 3
console.log("5" - 2); // 3
console.log(5 - "2"); // 3
console.log("five" - 2); // NaN
// ** ๋นผ๊ธฐ ์ฐ์ฐ์๋ ์ซ์์ ๋ฌธ์์ด์ ํจ๊ป ์ฌ์ฉํ ๊ฒฝ์ฐ, ์๋์ผ๋ก ์ซ์๋ก ๋ณํ
3) ๊ณฑํ๊ธฐ ์ฐ์ฐ์(*), ๋๋๊ธฐ ์ฐ์ฐ์(/), ๋๋๊ธฐ(=๋๋จธ์ง) ์ฐ์ฐ์(%)
console.log(2 * 3); // 6
console.log("2" * "3"); // 6
console.log("2" * 3); // 6
console.log(2 * "3"); // 6
console.log("two" * 3); // NaN
----------------------
console.log(6 / 3); // 2
console.log("6" / "3"); // 2
console.log("6" / 3); // 2
console.log(6 / "3"); // 2
console.log("six" / 3); // NaN
----------------------
console.log(7 % 3); // 1
console.log("7" % "3"); // 1
console.log("7" % 3); // 1
console.log(7 % "3"); // 1
console.log("seven" % 3); // NaN
//** ์ 3๊ฐ์ง ์ฐ์ฐ์ ๋ชจ๋ ์ซ์์ ๋ฌธ์์ด์ ํจ๊ป ์ฌ์ฉํ ๊ฒฝ์ฐ, ์๋์ผ๋ก ์ซ์๋ก ๋ณํํฉ๋๋ค.
(2) ํ ๋น ์ฐ์ฐ์(assignment operators)
1) ๋ฑํธ ์ฐ์ฐ์(=) : ๋ฑํธ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ์์ ๊ฐ์ ํ ๋นํ ์ ์๋ค.
let x = 10;
console.log(x); // 10
x = 5;
console.log(x); // 5
2) ๋ํ๊ธฐ ๋ฑํธ ์ฐ์ฐ์(+=) / ๋นผ๊ธฐ ๋ฑํธ ์ฐ์ฐ์(-=) : ๋ํ๊ธฐ,๋นผ๊ธฐ ๋ฑํธ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ์์ ๊ฐ์ ๋ํ๊ธฐ, ๋นผ๊ธฐ ํ ์ ์๋ค.
let x = 10;
console.log(x); // 10
x += 5;
console.log(x); // 15
-----------------
let x = 10;
console.log(x); // 10
x -= 5;
console.log(x); // 5
3) ๊ณฑํ๊ธฐ ๋ฑํธ ์ฐ์ฐ์(*=) / ๋๋๊ธฐ ๋ฑํธ ์ฐ์ฐ์(/=) : ๊ณฑํ๊ธฐ, ๋๋๊ธฐ ๋ฑํธ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ์์ ๊ฐ์ ๋ํ๊ธฐ, ๋นผ๊ธฐ ํ ์ ์๋ค.
let x = 10;
console.log(x); // 10
x *= 5;
console.log(x); // 50
----------------
let x = 10;
console.log(x); // 10
x /= 5;
console.log(x); // 2
4) ๋๋จธ์ง ๋ฑํธ ์ฐ์ฐ์(%=) : ๋๋จธ์ง ๋ฑํธ ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ์์์ ๊ฐ์ ๋๋ ๋๋จธ์ง๋ฅผ ๊ตฌํ ์ ์์ต๋๋ค.
let x = 10;
console.log(x); // 10
x %= 3;
console.log(x); // 1
(3) ๋น๊ต ์ฐ์ฐ์(comparison operators)
1) ์ผ์น ์ฐ์ฐ์(===) : ์ผ์น ์ฐ์ฐ์๋ ์๋ฃํ๊น์ง ๋น๊ตํฉ๋๋ค.
console.log(2 === 2); // true
console.log("2" === 2); // false
console.log(2 === "2"); // false
// ** type ๊น์ง ๋ชจ๋ ์ผ์นํด์ผ true๋ก ๋ฐํ๋๋ค.
2) ๋ถ์ผ์น ์ฐ์ฐ์(!==) : ๋ถ์ผ์น ์ฐ์ฐ์๋ ์๋ฃํ๊น์ง ๋น๊ตํฉ๋๋ค.
console.log(2 !== 2); // false : ์ซ์2๊ฐ ์ซ์2์ ๋ค๋ฅด๋? ๋ฌ๋ผ!
console.log("2" !== 2); // true : ๋ฌธ์2๋ ์ซ์2๋ ๋ค๋ฅด๋? ๋ง์!
console.log(2 !== "2"); // true : ์ซ์2๋ ๋ฌธ์2์ ๋ค๋ฅด๋? ๋ง์!
3) ์๋ค(<) ์ฐ์ฐ์ ์ ํฌ๋ค(>) ์ฐ์ฐ์ : ์๋ค์ ํฌ๋ค์ ์ฐ์ฐ์๋ ์ซ์์ ๋ฌธ์์ด์ ํจ๊ป ์ฌ์ฉํ ๊ฒฝ์ฐ, ์๋์ผ๋ก ์ซ์๋ก ๋ณํํฉ๋๋ค.
console.log(2 < 3); // true
console.log(2 < "3"); // true
console.log("2" < 3); // true
---------------------
console.log(2 > 3); // false
console.log(2 > "3"); // false
console.log("2" > 3); // false
4) ์๊ฑฐ๋ ๊ฐ๋ค(<=) ์ ํฌ๊ฑฐ๋ ๊ฐ๋ค(>=) ์ฐ์ฐ์ : ๋ ์ฐ์ฐ์๋ ์ซ์์ ๋ฌธ์์ด์ ํจ๊ป ์ฌ์ฉํ ๊ฒฝ์ฐ, ์๋์ผ๋ก ์ซ์๋ก ๋ณํํฉ๋๋ค.
console.log(2 <= 3); // true
console.log(2 <= "3"); // true
console.log("2" <= 3); // true
console.log(2 <= 2); // true
--------------------
console.log(2 >= 3); // false
console.log(2 >= "3"); // false
console.log("2" >= 3); // false
console.log(2 >= 2); // true
(4) ๋ ผ๋ฆฌ ์ฐ์ฐ์(logical operators)
1) ๋ ผ๋ฆฌ๊ณฑ(&&) ์ฐ์ฐ์ : ๋ ผ๋ฆฌ๊ณฑ ์ฐ์ฐ์๋ ๋ ๊ฐ์ด ๋ชจ๋ true์ผ ๊ฒฝ์ฐ์๋ง true๋ฅผ ๋ฐํํฉ๋๋ค.
console.log(true && true); // true
console.log(true && false); // false
console.log(false && true); // false
console.log(false && false); // false
2) ๋ ผ๋ฆฌํฉ(||) ์ฐ์ฐ์ : ๋ ๊ฐ ์ค ํ๋๋ผ๋ true์ผ ๊ฒฝ์ฐ true๋ฅผ ๋ฐํํฉ๋๋ค.
console.log(true || true); // true
console.log(true || false); // true
console.log(false || true); // true
console.log(false || false); // false
3) ๋ ผ๋ฆฌ๋ถ์ (!) ์ฐ์ฐ์ : ๊ฐ์ ๋ฐ๋๋ก ๋ฐ๊ฟ ์ ์์ต๋๋ค. ๋ ผ๋ฆฌ๋ถ์ ์ฐ์ฐ์๋ true๋ฅผ false๋ก, false๋ฅผ true๋ก ๋ฐ๊ฟ๋๋ค.
console.log(!true); // false
console.log(!false); // true
console.log(!(2 > 1)); // false
(5) ์ผํญ ์ฐ์ฐ์(ternary operator) : ์กฐ๊ฑด์๋ฐ๋ผ ๊ฐ์ ์ค์ ํ๋ค.
1) ์ผํญ ์ฐ์ฐ์(?:) : ์กฐ๊ฑด์ ๋ฐ๋ผ ๊ฐ์ ์ ํํ ์ ์์ต๋๋ค. ์ผํญ ์ฐ์ฐ์๋ ์กฐ๊ฑด์ ? true์ผ ๋์ ๊ฐ : false์ผ ๋์ ๊ฐ ํํ๋ก ์ฌ์ฉํฉ๋๋ค.
let x = 10;
let result = (x > 5) ? "ํฌ๋ค" : "์๋ค";
console.log(result); // "ํฌ๋ค"
(6) ํ์ ์ฐ์ฐ์(type operators)
1) typeof ์ฐ์ฐ์ : typeof ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ ์๋ฃํ์ ํ์ธํ ์ ์์ต๋๋ค. ์ด๋, typeof ์ฐ์ฐ์๋ ์์ ์๋ฃํ์ ๊ฒฝ์ฐ, ํด๋น ์๋ฃํ์ ์ด๋ฆ์, ๊ฐ์ฒด๋ ํจ์์ ๊ฒฝ์ฐ, "object" ๋๋ "function"์ ๋ฐํํฉ๋๋ค. typeof null์ ๊ฒฝ์ฐ "object"๋ฅผ ๋ฐํํ๋ ๋ฒ๊ทธ๊ฐ ์์ต๋๋ค.
console.log(typeof 123); // "number"
console.log(typeof "123"); // "string"
console.log(typeof true); // "boolean"
console.log(typeof undefined); // "undefined"
console.log(typeof null); // "object"
console.log(typeof {}); // "object"
console.log(typeof []); // "object"
console.log(typeof function(){}); // "function"
- 1-7๊ฐ ํจ์: ํจ์๋ input / ouput ์ ๊ฐ์ง๊ณ ์๋ค.
1. ํจ์ ์ ์ํ๊ธฐ
1) ํจ์ ์ ์ธ๋ฌธ(function declaration) : function ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ add๋ผ๋ ํจ์๋ฅผ ์ ์ธ. ํจ์ ์ ์ธ๋ฌธ์ ์ฌ์ฉํ๋ฉด ํจ์๋ฅผ ๋ฏธ๋ฆฌ ์ ์ํด๋๊ณ , ํ์ํ ๋ ํธ์ถํ ์ ์์ต๋๋ค. ( return ํค์๋๋ฅผ ํตํด ์ถ๋ ฅ์ด ๊ฐ๋ฅํ๋ค. )
function add(x, y) {
return x + y;
}
console.log(add(2, 3)); // 5
2) ํจ์ ํํ์(function expression) : function ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ add๋ผ๋ ๋ณ์์ ํจ์๋ฅผ ํ ๋นํ์์ต๋๋ค. ํจ์ ํํ์์ ์ฌ์ฉํ๋ฉด ํจ์๋ฅผ ๋ณ์์ ํ ๋นํ์ฌ ์ต๋ช ํจ์๋ฅผ ์์ฑํ ์ ์์ต๋๋ค.
let add = function(x, y) {
return x + y;
}
console.log(add(2, 3)); // 5
2. ํจ์ ํธ์ถํ๊ธฐ : add๋ผ๋ ํจ์๋ฅผ ํธ์ถํ์ฌ ๊ฒฐ๊ณผ๊ฐ์ ๋ฐํํฉ๋๋ค. ํจ์๋ฅผ ํธ์ถํ ๋๋ ํจ์ ์ด๋ฆ ๋ค์ ๊ดํธ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- ex) ํจ์๋ช ()->add()
function add(x, y) {
return x + y;
}
console.log(add(2, 3)); // 5
---------------------------------------------
let functionResult = add (3,4);
console.log (functionResult); // 7
3. ํจ์ ๋งค๊ฐ๋ณ์์ ๋ฐํ๊ฐ
1) ํจ์ ๋งค๊ฐ๋ณ์ : add๋ผ๋ ํจ์๊ฐ x์ y๋ผ๋ ๋ ๊ฐ์ ๋งค๊ฐ๋ณ์๋ฅผ ๋ฐ์๋ค์ ๋๋ค. ํจ์๋ฅผ ํธ์ถํ ๋๋ ๋งค๊ฐ๋ณ์์ ๊ฐ์ ์ ๋ฌํฉ๋๋ค.
function add(x, y) {
return x + y;
}
console.log(add(2, 3)); // 5
2) ํจ์ ๋ฐํ๊ฐ : add๋ผ๋ ํจ์๊ฐ x์ y๋ผ๋ ๋ ๊ฐ์ ๋งค๊ฐ๋ณ์๋ฅผ ๋ฐ์๋ค์ด๊ณ , ์ด๋ฅผ ๋ํ ๊ฐ์ ๋ฐํํฉ๋๋ค. ํจ์๋ฅผ ํธ์ถํ ๊ฒฐ๊ณผ๊ฐ์ ๋ณ์์ ํ ๋นํ์ฌ ์ฌ์ฉํ ์ ์์ต๋๋ค.
function add(x, y) {
return x + y;
}
let result = add(2, 3);
console.log(result); // 5
- 1-8๊ฐ ์ค์ฝํ ๋ฐ ํ์ดํํจ์
1. ์ค์ฝํ
์ค์ฝํ : ๋ณ์๊ฐ ์ด๋๊น์ง ์ํฅ์ ๋ผ์น ์ ์๋๊ฐ?

1)์ ์ญ ์ค์ฝํ : ์ ์ญ ์ค์ฝํ์์ ๋ณ์ x๋ฅผ ์ ์ธํ๊ณ , ํจ์ printX์์ ๋ณ์ x๋ฅผ ์ฐธ์กฐํฉ๋๋ค. ์ ์ญ ์ค์ฝํ์์ ์ ์ธ๋ ๋ณ์๋ ์ด๋์์๋ ์ง ์ฐธ์กฐํ ์ ์์ต๋๋ค.
let x = 10;
function printX() {
console.log(x);
}
printX(); // 10
2) ์ง์ญ ์ค์ฝํ(local scope) : ์ง์ญ ์ค์ฝํ์์ ๋ณ์ x๋ฅผ ์ ์ธํ๊ณ , ํจ์ printX์์ ๋ณ์ x๋ฅผ ์ฐธ์กฐํฉ๋๋ค. ์ง์ญ ์ค์ฝํ์์ ์ ์ธ๋ ๋ณ์๋ ํด๋น ํจ์ ๋ด์์๋ง ์ฐธ์กฐํ ์ ์์ต๋๋ค.
function printX() {
let x = 10;
console.log(x);
}
printX(); //
3) ๋ธ๋ก ์ค์ฝํ(block scope) : if๋ฌธ ๋ด์์ ๋ณ์ x๋ฅผ ์ ์ธํ๊ณ , ์ด๋ฅผ ์ถ๋ ฅํฉ๋๋ค. if๋ฌธ ๋ด์์ ์ ์ธ๋ ๋ณ์๋ ํด๋น ๋ธ๋ก ๋ด์์๋ง ์ฐธ์กฐํ ์ ์์ต๋๋ค.
if (true) {
let x = 10;
console.log(x);
}
console.log(x); // ReferenceError: x is not defined
2. ํ์ดํ ํจ์
1) ๊ธฐ๋ณธ์ ์ธ ํ์ดํ ํจ์ : ํ์ดํ ํจ์๋ฅผ ์ฌ์ฉํ์ฌ add๋ผ๋ ํจ์๋ฅผ ์ ์ธํ์์ต๋๋ค. ํ์ดํ ํจ์๋ฅผ ์ฌ์ฉํ๋ฉด ํจ์์ ์ ์ธ์ด ๊ฐ๊ฒฐํด์ง๋๋ค.
let add = (x, y) => {
return x + y;
}
console.log(add(2, 3)); // 5
2) ํ ์ค๋ก ๋ ํ์ดํ ํจ์ : ํจ์ ๋ด๋ถ์ return๋ฌธ์ด ํ ์ค๋ก ์์ฑ๋ ๊ฒฝ์ฐ, ์ค๊ดํธ์ return ํค์๋๋ฅผ ์๋ตํ ์ ์์ต๋๋ค.
let add = (x, y) => x + y;
console.log(add(2, 3)); // 5
3) ๋งค๊ฐ๋ณ์๊ฐ ํ๋์ธ ํ์ดํ ํจ์ : ๋งค๊ฐ๋ณ์๊ฐ ํ๋์ธ ํ์ดํ ํจ์๋ฅผ ์ฌ์ฉํ์ฌ square๋ผ๋ ํจ์๋ฅผ ์ ์ธํ์์ต๋๋ค. ๋งค๊ฐ๋ณ์๊ฐ ํ๋์ผ ๊ฒฝ์ฐ์๋ ๊ดํธ๋ฅผ ์๋ตํ ์ ์์ต๋๋ค.
let square = x => x * x;
console.log(square(3)); // 9
