๐Ÿ’ป Javascript_๋ฌธ๋ฒ• 1-1(JS ์ •์˜ & ๊ธฐ๋ณธ๋ฌธ๋ฒ•)

๊น€์ง€ํ˜œยท2023๋…„ 5์›” 25์ผ
0

JS

๋ชฉ๋ก ๋ณด๊ธฐ
1/4

0. JS ์–ธ์–ด ํŠน์ง•

Javascript๋ž€? :
์›น ํŽ˜์ด์ง€์—์„œ ๋ณต์žกํ•œ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฐ์ฒด ๊ธฐ๋ฐ˜์˜ ์Šคํฌ๋ฆฝํŒ… ์–ธ์–ด ๋˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด

  1. ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ง€์›
  2. ๋™์  ํƒ€์ดํ•‘
  3. ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ง€์›
  4. ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ
  5. ํด๋ผ์ด์–ธํŠธ ์ธก ๋ฐ ์„œ๋ฒ„ ์ธก ๋ชจ๋‘์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

1. ๋ณ€์ˆ˜์™€ ์ƒ์ˆ˜

๋ณ€์ˆ˜์˜ ์ •์˜์™€ ํ•„์š”์„ฑ :

๋ชจ๋“  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋Š” ๊ธฐ์–ตํ•˜๊ณ  ์‹ถ์€ ๊ฐ’์„ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•˜๊ณ , ์ €์žฅ๋œ ๊ฐ’์„ ์ฝ์–ด ๋“ค์—ฌ ์žฌ์‚ฌ์šฉ

๋ณ€์ˆ˜ 5๊ฐ€์ง€ ์ฃผ์š” ๊ฐœ๋… :

๋ณ€์ˆ˜ ์ด๋ฆ„ : ์ €์žฅ๋œ ๊ฐ’์˜ ๊ณ ์œ  ์ด๋ฆ„

๋ณ€์ˆ˜ ๊ฐ’ : ๋ณ€์ˆ˜์— ์ €์žฅ๋œ ๊ฐ’

๋ณ€์ˆ˜ ํ• ๋‹น : ๋ณ€์ˆ˜์— ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ํ–‰์œ„

๋ณ€์ˆ˜ ์„ ์–ธ : ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์ปดํ“จํ„ฐ์— ์•Œ๋ฆฌ๋Š” ํ–‰์œ„

๋ณ€์ˆ˜ ์ฐธ์กฐ : ๋ณ€์ˆ˜์— ํ• ๋‹น๋œ ๊ฐ’์„ ์ฝ์–ด์˜ค๋Š”๊ฒƒ

var / let / const
-var๋Š” ์˜ˆ์ „๋ถ€ํ„ฐ ์‚ฌ์šฉ
-let๊ณผ 'const`๋Š” ECMAScript 6(ES6)์—์„œ ์ƒˆ๋กœ ๋„์ž…๋œ ๋ฐฉ๋ฒ•

๋ณ€์ˆ˜ : var / let
์ƒ์ˆ˜ : 'const`

var

// var๋กœ ๋ณ€์ˆ˜ ์„ ์–ธ
var myVar = "๋ฌธ์ž";
console.log(myVar); // "๋ฌธ์ž"

let

// let์œผ๋กœ ๋ณ€์ˆ˜ ์„ ์–ธ
let myLet = "๋ฌธ์ž";
console.log(myLet); // "๋ฌธ์ž"

const

// const๋กœ ์ƒ์ˆ˜ ์„ ์–ธ
const myConst = "๋ฌธ์ž";
console.log(myConst); // "๋ฌธ์ž"
  • var๋Š” ๊ฐ™์€ ์ด๋ฆ„์˜ ๋ณ€์ˆ˜๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ์„ ์–ธํ•ด๋„ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ X
    => ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ์„ ์–ธํ•œ ๊ฐ’์œผ๋กœ ๋ณ€์ˆ˜๊ฐ€ ๋ฎ์–ด์”Œ์›Œ์ง

  • let๊ณผ const๋Š” ๊ฐ™์€ ์ด๋ฆ„์˜ ๋ณ€์ˆ˜๋ฅผ ๋‘ ๋ฒˆ ์„ ์–ธํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒO
    => const๋Š” ์„ ์–ธ ํ›„์— ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋Š” ์ƒ์ˆ˜๋ฅผ ์„ ์–ธํ•  ๋•Œ ์‚ฌ์šฉ

// 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);

2-1. ๋ฐ์ดํ„ฐ ํƒ€์ž…

1. ์ˆซ์ž(Number)

1-1. ์ •์ˆ˜ํ˜• ์ˆซ์ž(Integer)

let num1 = 1;
console.log(num1); // 1
console.log(typeof num1); // "number"

1-2. ์‹ค์ˆ˜ํ˜• ์ˆซ์ž(Float)

let num2 = 3.14;
console.log(num2); // 3.14
console.log(typeof num2); // "number"

1-3. ์ง€์ˆ˜ํ˜• ์ˆซ์ž(Exponential)

์ง€์ˆ˜(e) :

  • JS์—์„œ ์•„์ฃผ ๊ธด ์ˆซ์ž๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ์‚ฌ์šฉ
    ์˜ค๋ฅธ์ชฝ์— ์žˆ๋Š” ์ˆ˜๋งŒํผ 10์˜ ๊ฑฐ๋“ญ์ œ๊ณฑ์„ ๊ณฑํ•˜๋Š” ์˜๋ฏธ
    (Ex. 2.5 x 10^5 => 2.5e5(2.5e5 * 10^5)
let num3 = 2.5e5; // 2.5 x 10^5
console.log(num3); // 250000
console.log(typeof num3); // "number"

1-4 NaN(Not a Number)

NaN(Not a Number) :

  • JS์—์„œ ์ˆซ์ž๊ฐ€ ์•„๋‹˜์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ’
    (EX. ์ˆ˜ํ•™์ ์œผ๋กœ ์ •์˜๋˜์ง€ ์•Š๋Š” ๊ณ„์‚ฐ ์ˆ˜ํ–‰ /
    ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๊ฐ’ => ์ˆซ์ž๋กœ ๋ฐ˜ํ™˜ ์‹œ ๋ฐœ์ƒ)
let num4 = "Hello" / 2;
console.log(num4); // NaN
console.log(typeof num4); // "number"

1-5 Infinity(์ „์—ญ ๊ฐ์ฒด์˜ ์†์„ฑ(์ „์—ญ ๋ฒ”์œ„์˜ ๋ณ€์ˆ˜) -> ๋ฌดํ•œ๋Œ€)

let num5 = 1 / 0;
console.log(num5); // Infinity
console.log(typeof num5); // "number"

2. ๋ฌธ์ž์—ด(String)

๋ฌธ์ž์—ด(String) :

  • ๋ฌธ์ž์˜ ๋‚˜์—ด
  • ์ž‘์€ ๋”ฐ์˜ดํ‘œ('') / ํฐ ๋”ฐ์˜ดํ‘œ(")๋กœ ๊ฐ์‹ธ์„œ ํ‘œํ˜„
let name = '์ด๋ฆ„';
let message = "๋ฉ”์‹œ์ง€";

2-1. ๋ฌธ์ž์—ด ๊ธธ์ด(length)

length

let str = "Hello, world!";
console.log(str.length); // 13

2-2. ๋ฌธ์ž์—ด ๊ฒฐํ•ฉ(concatenation)

concatenation

let str1 = "Hello, ";
let str2 = "world!";
let result = str1.concat(str2);
console.log(result); // "Hello, world!"

2-3. ๋ฌธ์ž์—ด ์ž๋ฅด๊ธฐ(substr, slice)

substr

let str = "Hello, world!";
console.log(str.substr(7, 5)); // "world"

slice

let str = "Hello, world!";
console.log(str.slice(7, 12)); // "world"

2-4. ๋ฌธ์ž์—ด ๊ฒ€์ƒ‰(search)

search

let str = "Hello, world!";
console.log(str.search("world")); // 7

2-5. ๋ฌธ์ž์—ด ๋Œ€์ฒด(replace)

replace

let str = "Hello, world!";
let result = str.replace("world", "JavaScript");
console.log(result); // "Hello, JavaScript!"

2-6. ๋ฌธ์ž์—ด ๋ถ„ํ• (split)

split

let str = "apple, banana, kiwi";
let result = str.split(",");
console.log(result); // ["apple", " banana", " kiwi"]

3. ๋ถˆ๋ฆฌ์–ธ(Boolean)

๋ถˆ๋ฆฌ์–ธ(Boolean) :

  • ์ฐธ(true)๊ณผ ๊ฑฐ์ง“(false)์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐ์ดํ„ฐ ํƒ€์ž…

์ฐธ(true)

let bool1 = true;
console.log(bool1); // true
console.log(typeof bool1); // "boolean"

๊ฑฐ์ง“(false)

let bool2 = false;
console.log(bool2); // false
console.log(typeof bool2); // "boolean"
  • ์กฐ๊ฑด๋ฌธ(if, else, switch ๋“ฑ) / ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž(&&, ||, !)์™€ ํ•จ๊ป˜ ๋งŽ์ด ์‚ฌ์šฉ
let x = 10;
let y = 5;

if (x > y) {
  console.log("x์€ Y๋ณด๋‹ค ํฌ๋‹ค.");
} else {
  console.log("x๋Š” y๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค.");
}

let a = true;
let b = false;

console.log(a && b); // false
console.log(a || b); // true
console.log(!a); // false

=> ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž(&&, ||, !) ์‚ฌ์šฉ
= a์™€ b์˜ ๋…ผ๋ฆฌ์ ์ธ AND(&&)์™€ OR(||) ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ / , NOT(!) ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰

4. undefined

undefined :

  • ๊ฐ’์ด ํ• ๋‹น๋˜์ง€ ์•Š์€ ๋ณ€์ˆ˜
  • (๊ฐœ๋ฐœ์ž์˜ ๋ช…์‹œ์ ์ธ ํ‘œ์‹œ O = ๋ณ€์ˆ˜ ์„ ์–ธ ํ›„ ๊ฐ’์„ ํ• ๋‹นํ•˜์ง€ ์•Š์€ ์ƒํƒœ)
let x;
console.log(x); // undefined

5. null

null :

  • ๊ฐ’์ด ์กด์žฌํ•˜์ง€ ์•Š์Œ (null !== undefined)
  • (๊ฐœ๋ฐœ์ž์˜ ๋ช…์‹œ์ ์ธ ํ‘œ์‹œ X = ๋ณ€์ˆ˜ ์„ ์–ธ ํ›„ ๋นˆ ๊ฐ’์„ ํ• ๋‹นํ•œ ์ƒํƒœ)
let y = null;

6. ๊ฐ์ฒด(Object)

๊ฐ์ฒด(Object) :

  • JS์—์„  ๋งค์šฐ ์ค‘์š”
  • ์†์„ฑ๊ณผ ๋ฉ”์†Œ๋“œ๋ฅผ ๊ฐ€์ง€๋Š” ์ปจํ…Œ์ด๋„ˆ
  • ์ค‘๊ด„ํ˜ธ({})๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ
let person = { name: '์ด๋ฆ„', age: 20 };
person.name // '์ด๋ฆ„'
person.age // 20

7. ๋ฐฐ์—ด(Array)

๋ฐฐ์—ด(Array) :

  • ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ์ €์žฅํ•˜๋Š” ๋ฐ์ดํ„ฐ ํƒ€์ž…
  • ๋Œ€๊ด„ํ˜ธ([])๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐฐ์—ด์„ ์ƒ์„ฑ
let numbers = [1, 2, 3, 4, 5];
let fruits = ['apple', 'banana', 'orange'];

2-2. ํ˜• ๋ณ€ํ™˜

1. ์•”์‹œ์  ํ˜• ๋ณ€ํ™˜(implicit coercion)

์•”์‹œ์  ํ˜• ๋ณ€ํ™˜ :

  • Js์—์„œ ์ž๋™์œผ๋กœ ์ˆ˜ํ–‰๋˜๋Š” ํ˜• ๋ณ€ํ™˜
  • ์ผ๋ฐ˜์ ์œผ๋กœ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋ฐœ์ƒ

[2]-1-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]-1-2. ์ˆซ์ž ๋ณ€ํ™˜

console.log(1 - "2");   // -1

console.log("2" * "3");   // 6

console.log(4 + +"5");   // 9

=> ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ, ๋ฌธ์ž์—ด -> ์ˆซ์ž๋กœ ๋ณ€ํ™˜
= ๋นˆ ๋ฌธ์ž์—ด("")์ด๋‚˜ ๊ณต๋ฐฑ ๋ฌธ์ž์—ด(" ") -> 0์œผ๋กœ ๋ณ€ํ™˜

[2]-1-3. ๋ถˆ๋ฆฌ์–ธ ๋ณ€ํ™˜

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

=> Boolean() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ถˆ๋ฆฌ์–ธ ๊ฐ’์œผ๋กœ ๋ณ€ํ™˜
= 0, ๋นˆ ๋ฌธ์ž์—ด(""), null, undefined, NaN -> false๋กœ ๋ณ€ํ™˜
= ๊ทธ ์™ธ์˜ ๊ฐ’ -> true๋กœ ๋ณ€ํ™˜

2. ๋ช…์‹œ์  ํ˜• ๋ณ€ํ™˜(explicit coercion)

๋ช…์‹œ์  ํ˜• ๋ณ€ํ™˜ :
๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ -> ์ž๋ฃŒํ˜•์„ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ

[2]-2-1. ๋ฌธ์ž์—ด ๋ณ€ํ™˜

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]"

=> String() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉ ๋‹ค๋ฅธ ์ž๋ฃŒํ˜• -> ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜

[2]-2-2. ์ˆซ์ž ๋ณ€ํ™˜

console.log(Number("123"));   // 123

console.log(Number(""));      // 0

console.log(Number("  "));    // 0

console.log(Number(true));    // 1

console.log(Number(false));   // 0

=> Number() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉ ๋‹ค๋ฅธ ์ž๋ฃŒํ˜• -> ์ˆซ์ž๋กœ ๋ณ€ํ™˜

3. ์—ฐ์‚ฐ์ž

3-1. ์‚ฐ์ˆ  ์—ฐ์‚ฐ์ž(arithmetic operators)

[1]-1. ๋”ํ•˜๊ธฐ ์—ฐ์‚ฐ์ž(+)

console.log(2 + 3);       // 5

console.log("2" + "3");   // "23"

console.log("2" + 3);     // "23"

console.log(2 + "3");     // "23"

=> ์ˆซ์ž๋‚˜ ๋ฌธ์ž์—ด์„ ๋”ํ•  ์ˆ˜ ์žˆ์Œ
= ์ˆซ์ž์™€ ๋ฌธ์ž์—ด์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ -> ์ž๋™์œผ๋กœ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜

[1]-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

=> ๋นผ๊ธฐ ์—ฐ์‚ฐ์ž(-)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆซ์ž๋ฅผ ๋บ„ ์ˆ˜ ์žˆ์Œ
= ์ˆซ์ž์™€ ๋ฌธ์ž์—ด์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ -> ์ž๋™์œผ๋กœ ์ˆซ์ž๋กœ ๋ณ€ํ™˜

[1]-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

=> ๊ณฑํ•˜๊ธฐ ์—ฐ์‚ฐ์ž(*)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆซ์ž๋ฅผ ๊ณฑํ•  ์ˆ˜ ์žˆ์Œ
= ์ˆซ์ž์™€ ๋ฌธ์ž์—ด์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ -> ์ž๋™์œผ๋กœ ์ˆซ์ž๋กœ ๋ณ€ํ™˜

[1]-4. ๋‚˜๋ˆ„๊ธฐ ์—ฐ์‚ฐ์ž(/)

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

=> ๋‚˜๋ˆ„๊ธฐ ์—ฐ์‚ฐ์ž(/)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆซ์ž๋ฅผ ๊ณฑํ•  ์ˆ˜ ์žˆ์Œ
= ์ˆซ์ž์™€ ๋ฌธ์ž์—ด์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ -> ์ž๋™์œผ๋กœ ์ˆซ์ž๋กœ ๋ณ€ํ™˜

[1]-5. ๋‚˜๋จธ์ง€ ์—ฐ์‚ฐ์ž(%)

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)

[2]-1. ๋“ฑํ˜ธ ์—ฐ์‚ฐ์ž(=)

let x = 10;
console.log(x);   // 10

x = 5;
console.log(x);   // 5

=> ๋“ฑํ˜ธ ์—ฐ์‚ฐ์ž(=) ์‚ฌ์šฉ -> ๋ณ€์ˆ˜์— ๊ฐ’ ํ• ๋‹น

[2]-2. ๋”ํ•˜๊ธฐ ๋“ฑํ˜ธ ์—ฐ์‚ฐ์ž(+=)

let x = 10;
console.log(x);   // 10

x += 5;
console.log(x);   // 15

=> ๋”ํ•˜๊ธฐ ๋“ฑํ˜ธ ์—ฐ์‚ฐ์ž(+=)๋ฅผ ์‚ฌ์šฉ -> ๋ณ€์ˆ˜์— ๊ฐ’์„ ๋”ํ•  ์ˆ˜ ์žˆ์Œ

[2]-3. ๋นผ๊ธฐ ๋“ฑํ˜ธ ์—ฐ์‚ฐ์ž(-=)

let x = 10;
console.log(x);   // 10

x -= 5;
console.log(x);   // 5

=> ๋นผ๊ธฐ ๋“ฑํ˜ธ ์—ฐ์‚ฐ์ž(-=)๋ฅผ ์‚ฌ์šฉ -> ๋ณ€์ˆ˜์—์„œ ๊ฐ’์„ ๋บ„ ์ˆ˜ ์žˆ์Œ

[2]-5. ๋‚˜๋ˆ„๊ธฐ ๋“ฑํ˜ธ ์—ฐ์‚ฐ์ž(/=)

let x = 10;
console.log(x);   // 10

x /= 5;
console.log(x);   // 2

=> ๋‚˜๋ˆ„๊ธฐ ๋“ฑํ˜ธ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉ -> ๋ณ€์ˆ˜์—์„œ ๊ฐ’์„ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Œ

[2]-6. ๋‚˜๋จธ์ง€ ๋“ฑํ˜ธ ์—ฐ์‚ฐ์ž(%=)

let x = 10;
console.log(x);   // 10

x %= 3;
console.log(x);   // 1

=> ๋‚˜๋จธ์ง€ ๋“ฑํ˜ธ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉ -> ๋ณ€์ˆ˜์—์„œ ๊ฐ’์„ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ๊ตฌํ•  ์ˆ˜ ์žˆ์Œ

3-3. ๋น„๊ต ์—ฐ์‚ฐ์ž(comparison operators)

[3]-1. ์ผ์น˜ ์—ฐ์‚ฐ์ž(===)

console.log(2 === 2);   // true

console.log("2" === 2);   // false

console.log(2 === "2");   // false

=> ์ผ์น˜ ์—ฐ์‚ฐ์ž(===)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‘ ๊ฐ’์ด ๊ฐ™์€์ง€ ๋น„๊ต
= ์ผ์น˜ ์—ฐ์‚ฐ์ž๋Š” ์ž๋ฃŒํ˜•๊นŒ์ง€ ๋น„๊ต

[3]-2. ๋ถˆ์ผ์น˜ ์—ฐ์‚ฐ์ž(!==)

console.log(2 !== 2);   // false

console.log("2" !== 2);   // true

console.log(2 !== "2");   // true

=> ๋ถˆ์ผ์น˜ ์—ฐ์‚ฐ์ž(!==) ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉ -> ๋‘ ๊ฐ’์ด ๋‹ค๋ฅธ์ง€ ๋น„๊ต
= ๋ถˆ์ผ์น˜ ์—ฐ์‚ฐ์ž๋Š” ์ž๋ฃŒํ˜•๊นŒ์ง€ ๋น„๊ต

[3]-3. ์ž‘๋‹ค(<) ์—ฐ์‚ฐ์ž

console.log(2 < 3);   // true

console.log(2 < "3");   // true

console.log("2" < 3);   // true

=> ์ž‘๋‹ค(<) ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉ -> ๋‘ ๊ฐ’์„ ๋น„๊ต
= ์ˆซ์ž์™€ ๋ฌธ์ž์—ด์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ, ์ž๋™์œผ๋กœ ์ˆซ์ž๋กœ ๋ณ€ํ™˜

[3]-4. ํฌ๋‹ค(>) ์—ฐ์‚ฐ์ž

console.log(2 > 3);   // false

console.log(2 > "3");   // false

console.log("2" > 3);   // false

=> ํฌ๋‹ค(>) ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉ -> ๋‘ ๊ฐ’์„ ๋น„๊ต
= ์ˆซ์ž์™€ ๋ฌธ์ž์—ด์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ, ์ž๋™์œผ๋กœ ์ˆซ์ž๋กœ ๋ณ€ํ™˜

[3]-5. ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค(<=) ์—ฐ์‚ฐ์ž

console.log(2 <= 3);   // true

console.log(2 <= "3");   // true

console.log("2" <= 3);   // true

console.log(2 <= 2);   // true

=> ์ž‘๊ฑฐ๋‚˜ ๊ฐ™๋‹ค(<=) ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‘ ๊ฐ’์„ ๋น„๊ต
= ์ˆซ์ž์™€ ๋ฌธ์ž์—ด์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ, ์ž๋™์œผ๋กœ ์ˆซ์ž๋กœ ๋ณ€ํ™˜

[3]-6. ํฌ๊ฑฐ๋‚˜ ๊ฐ™๋‹ค(>=) ์—ฐ์‚ฐ์ž

console.log(2 >= 3);   // false

console.log(2 >= "3");   // false

console.log("2" >= 3);   // false

console.log(2 >= 2);   // true

=> ํฌ๊ฑฐ๋‚˜ ๊ฐ™๋‹ค(>=)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‘ ๊ฐ’์„ ๋น„๊ต
= ์ˆซ์ž์™€ ๋ฌธ์ž์—ด์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ๊ฒฝ์šฐ, ์ž๋™์œผ๋กœ ์ˆซ์ž๋กœ ๋ณ€ํ™˜

4. ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž(logical operators)

[4]-1. ๋…ผ๋ฆฌ๊ณฑ(&&) ์—ฐ์‚ฐ์ž

console.log(true && true);   // true

console.log(true && false);   // false

console.log(false && true);   // false

console.log(false && false);   // false

=> ๋…ผ๋ฆฌ๊ณฑ(&&) ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‘ ๊ฐ’์„ ๋น„๊ต
= ๋‘ ๊ฐ’์ด ๋ชจ๋‘ true์ผ ๊ฒฝ์šฐ์—๋งŒ true๋ฅผ ๋ฐ˜ํ™˜

[4]-2. ๋…ผ๋ฆฌํ•ฉ(||) ์—ฐ์‚ฐ์ž

console.log(true || true);   // true

console.log(true || false);   // true

console.log(false || true);   // true

console.log(false || false);   // false

=> ๋…ผ๋ฆฌํ•ฉ(||)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‘ ๊ฐ’์„ ๋น„๊ต
= ๋‘ ๊ฐ’ ์ค‘ ํ•˜๋‚˜๋ผ๋„ true์ผ ๊ฒฝ์šฐ true๋ฅผ ๋ฐ˜ํ™˜

[4]-3. ๋…ผ๋ฆฌ๋ถ€์ •(!) ์—ฐ์‚ฐ์ž

console.log(!true);   // false

console.log(!false);   // true

console.log(!(2 > 1));   // false

=> ๋…ผ๋ฆฌ๋ถ€์ • ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ’์„ ๋ฐ˜๋Œ€๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Œ
= true -> false๋กœ, false -> true

5. ์‚ผํ•ญ ์—ฐ์‚ฐ์ž(ternary operator)

[5]-1. ์‚ผํ•ญ ์—ฐ์‚ฐ์ž(?:)

let x = 10;
let result = (x > 5) ? "ํฌ๋‹ค" : "์ž‘๋‹ค";
console.log(result);   // "ํฌ๋‹ค"

=> ์‚ผํ•ญ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์กฐ๊ฑด์— ๋”ฐ๋ผ ๊ฐ’์„ ์„ ํƒ
= ์กฐ๊ฑด์‹ ? true์ผ ๋•Œ์˜ ๊ฐ’ : false์ผ ๋•Œ์˜ -> ๊ฐ’ ํ˜•ํƒœ๋กœ ์‚ฌ์šฉ

6. ํƒ€์ž… ์—ฐ์‚ฐ์ž(type operators)

[6]-1. typeof ์—ฐ์‚ฐ์ž

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"

=> typeof ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ’์˜ ์ž๋ฃŒํ˜•์„ ํ™•์ธ
= ypeof ์—ฐ์‚ฐ์ž : ์›์‹œ ์ž๋ฃŒํ˜•์˜ ๊ฒฝ์šฐ, ํ•ด๋‹น ์ž๋ฃŒํ˜•์˜ ์ด๋ฆ„
= ๊ฐ์ฒด๋‚˜ ํ•จ์ˆ˜ : object ๋˜๋Š” function์„ ๋ฐ˜ํ™˜
= typeof null : object๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฒ„๊ทธ

4. ํ•จ์ˆ˜

1. ํ•จ์ˆ˜ ์ •์˜

[1]-1. ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ(function declaration)

function add(x, y) {
  return x + y;
}

console.log(add(2, 3));   // 5

=> function ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉ -> add๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ์„ ์–ธ
= ํ•จ์ˆ˜ ์„ ์–ธ๋ฌธ์„ ์‚ฌ์šฉ -> ํ•จ์ˆ˜๋ฅผ ๋ฏธ๋ฆฌ ์ •์˜ํ•ด๋‘๊ณ , ํ•„์š”ํ•  ๋•Œ ํ˜ธ์ถœ

[1]-2. ํ•จ์ˆ˜ ํ‘œํ˜„์‹(function expression)

let add = function(x, y) {
  return x + y;
}

console.log(add(2, 3));   // 5

=> unction ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ add๋ผ๋Š” ๋ณ€์ˆ˜์— ํ•จ์ˆ˜๋ฅผ ํ• ๋‹น
= ํ•จ์ˆ˜ ํ‘œํ˜„์‹์„ ์‚ฌ์šฉ -> ํ•จ์ˆ˜๋ฅผ ๋ณ€์ˆ˜์— ํ• ๋‹น, ์ต๋ช… ํ•จ์ˆ˜๋ฅผ ์ƒ์„ฑ

2. ํ•จ์ˆ˜ ํ˜ธ์ถœ

[2]-1. ํ•จ์ˆ˜ ํ˜ธ์ถœ

function add(x, y) {
  return x + y;
}

console.log(add(2, 3));   // 5

=> add๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœ -> ๊ฒฐ๊ณผ๊ฐ’์„ ๋ฐ˜ํ™˜
= ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ -> ํ•จ์ˆ˜ ์ด๋ฆ„ ๋’ค์— ๊ด„ํ˜ธ๋ฅผ ์‚ฌ์šฉ

3. ํ•จ์ˆ˜ ๋งค๊ฐœ๋ณ€์ˆ˜ / ๋ฐ˜ํ™˜๊ฐ’

[3]-1. ํ•จ์ˆ˜ ๋งค๊ฐœ๋ณ€์ˆ˜

function add(x, y) {
  return x + y;
}

console.log(add(2, 3));   // 5

=> add๋ผ๋Š” ํ•จ์ˆ˜ -> x์™€ y๋ผ๋Š” ๋‘ ๊ฐœ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ฐ›์•„๋“ค์ž„
= ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ -> ๋งค๊ฐœ๋ณ€์ˆ˜์— ๊ฐ’์„ ์ „๋‹ฌ

[3]-2. ํ•จ์ˆ˜ ๋ฐ˜ํ™˜๊ฐ’

function add(x, y) {
  return x + y;
}

let result = add(2, 3);
console.log(result);   // 5

=> add๋ผ๋Š” ํ•จ์ˆ˜ -> x์™€ y๋ผ๋Š” ๋‘ ๊ฐœ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋ฐ›์•„๋“ค์ž„ -> ์ด๋ฅผ ๋”ํ•œ ๊ฐ’์„ ๋ฐ˜ํ™˜
= ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•œ ๊ฒฐ๊ณผ๊ฐ’ -> ๋ณ€์ˆ˜์— ํ• ๋‹นํ•˜์—ฌ ์‚ฌ์šฉ

4. ํ•จ์ˆ˜ ์Šค์ฝ”ํ”„

[4]-1. ์ „์—ญ ์Šค์ฝ”ํ”„(global scope)

let x = 10;

function printX() {
  console.log(x);
}

printX();   // 10

=> ์ „์—ญ ์Šค์ฝ”ํ”„์—์„œ ๋ณ€์ˆ˜ x๋ฅผ ์„ ์–ธ -> ํ•จ์ˆ˜ printX์—์„œ ๋ณ€์ˆ˜ x๋ฅผ ์ฐธ์กฐ
= ์ „์—ญ ์Šค์ฝ”ํ”„์—์„œ ์„ ์–ธ๋œ ๋ณ€์ˆ˜ -> ์–ด๋””์—์„œ๋“ ์ง€ ์ฐธ์กฐ

[4]-2. ์ง€์—ญ ์Šค์ฝ”ํ”„(local scope)

function printX() {
  let x = 10;
  console.log(x);
}

printX();   //

=> ์ง€์—ญ ์Šค์ฝ”ํ”„์—์„œ ๋ณ€์ˆ˜ x๋ฅผ ์„ ์–ธ -> ํ•จ์ˆ˜ printX์—์„œ ๋ณ€์ˆ˜ x๋ฅผ ์ฐธ์กฐ
= ์ง€์—ญ ์Šค์ฝ”ํ”„์—์„œ ์„ ์–ธ๋œ ๋ณ€์ˆ˜ -> ํ•ด๋‹น ํ•จ์ˆ˜ ๋‚ด์—์„œ๋งŒ ์ฐธ์กฐ

5. ํ™”์‚ดํ‘œ ํ•จ์ˆ˜

[5]-1. ๊ธฐ๋ณธ์ ์ธ ํ™”์‚ดํ‘œ ํ•จ์ˆ˜

let add = (x, y) => {
  return x + y;
}

console.log(add(2, 3));   // 5

=> ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉ -> add๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ์„ ์–ธ
= ํ•จ์ˆ˜์˜ ์„ ์–ธ ๊ฐ„๊ฒฐํ•ด์ง

[5]-2. ํ•œ ์ค„๋กœ ๋œ ํ™”์‚ดํ‘œ ํ•จ์ˆ˜

let add = (x, y) => x + y;

console.log(add(2, 3));   // 5

=> ํ•œ ์ค„๋กœ ๋œ ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉ -> add๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ์„ ์–ธ
= ํ•จ์ˆ˜ ๋‚ด๋ถ€์— return๋ฌธ์ด ํ•œ ์ค„๋กœ ์ž‘์„ฑ๋  ๊ฒฝ์šฐ -> ์ค‘๊ด„ํ˜ธ์™€ return ํ‚ค์›Œ๋“œ๋ฅผ ์ƒ๋žต ๊ฐ€๋Šฅ

[5]-3. ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ํ•˜๋‚˜์ธ ํ™”์‚ดํ‘œ ํ•จ์ˆ˜

let square = x => x * x;

console.log(square(3));   // 9

=> ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ํ•˜๋‚˜์ธ ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉ -> square๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ์„ ์–ธ
= ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ํ•˜๋‚˜์ผ ๊ฒฝ์šฐ -> ๊ด„ํ˜ธ๋ฅผ ์ƒ๋žต ๊ฐ€๋Šฅ

0๊ฐœ์˜ ๋Œ“๊ธ€