JavaScript ๊ธฐ๋ณธ


๐Ÿ‚ย ๋ณ€์ˆ˜

  • var๋Š” ์‚ฌ์šฉ X
  • ์ƒํ™ฉ์— ๋”ฐ๋ผ let์ด๋‚˜ const๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.
  • let

  • ๊ฐ’์˜ ์žฌํ• ๋‹น์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • let a = 12;
    console.log(a); // 12
    a = 999;
    console.log(a); // 999

    const

  • ๊ฐ’์˜ ์žฌํ• ๋‹น ๋ถˆ๊ฐ€
  • const a = 12;
    console.log(a); // 12
    a = 999; // TypeError: Assignment to constant variable.
    console.log(a);

    ๋ณ€์ˆ˜์˜ ํ˜ธ์ด์ŠคํŒ…(hoisting)

  • ํ˜ธ์ด์ŠคํŒ…์ด๋ž€ ๋ณ€์ˆ˜๋‚˜ ํ•จ์ˆ˜์˜ ์„ ์–ธ์„ ์ตœ์ƒ๋‹จ์œผ๋กœ ๋Œ์–ด์˜ฌ๋ฆฌ๋Š” ๊ฒƒ์ด๋‹ค.
  • ๋”ฐ๋ผ์„œ ์•„๋ž˜ ์ฝ”๋“œ์—์„œ a๊ฐ€ ์„ ์–ธ๋˜๊ธฐ ์ „์— a๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ๋„ ์—๋Ÿฌ๊ฐ€ ์•„๋‹Œ undefined๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
  • ๋ณ€์ˆ˜ ์„ ์–ธ์€ ์†Œ์Šค์ฝ”๋“œ๊ฐ€ ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ์‹œ์ ์ธ ๋Ÿฐํƒ€์ž„ ์ด์ „์— ๋จผ์ € ์‹คํ–‰๋˜์ง€๋งŒ ๊ฐ’์˜ ํ• ๋‹น์€ ์†Œ์Šค์ฝ”๋“œ๊ฐ€ ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ์‹œ์ ์ธ ๋Ÿฐํƒ€์ž„์— ์‹คํ–‰๋œ๋‹ค.
  • console.log(a); // undefined
    var a; // ๋ณ€์ˆ˜ ์„ ์–ธ
    a = 99; // ๊ฐ’์˜ ํ• ๋‹น
    console.log(a); // 99
  • ๋ณ€์ˆ˜ ์„ ์–ธ๊ณผ ๊ฐ’์˜ ํ• ๋‹น์„ ํ•˜๋‚˜์˜ ๋ฌธ์žฅ์œผ๋กœ ์ถ•์•ฝํ•˜์—ฌ ํ‘œํ˜„ํ•˜๋”๋ผ๋„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„์€ ์ด๋ฅผ 2๊ฐœ์˜ ๋ฌธ์œผ๋กœ ๋‚˜๋ˆ„์–ด ๊ฐ๊ฐ ์‹คํ–‰ํ•˜๋ฏ€๋กœ ๊ฒฐ๊ณผ์—๋Š” ๋ณ€ํ•จ์ด ์—†๋‹ค.
  • console.log(a); // undefined
    var a = 99; // ๋ณ€์ˆ˜ ์„ ์–ธ๊ณผ ๊ฐ’์˜ ํ• ๋‹น
    console.log(a); // 99

    let๊ณผ const์˜ ํ˜ธ์ด์ŠคํŒ…(hoisting)

  • let๊ณผ const ๋ณ€์ˆ˜๋„ ํ˜ธ์ด์ŠคํŒ…์ด ์•ˆ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.
  • ๊ทธ๋Ÿฌ๋‚˜ let๊ณผ const ๋ณ€์ˆ˜์˜ ๊ฒฝ์šฐ var ๋ณ€์ˆ˜์™€ ๋‹ค๋ฅด๊ฒŒ ๋ณ€์ˆ˜์˜ ์„ ์–ธ ๋‹จ๊ณ„์™€ ์ดˆ๊ธฐํ™” ๋‹จ๊ณ„ ์‚ฌ์ด์— ์ผ์‹œ์  ์‚ฌ๊ฐ ์ง€๋Œ€(Temporal Dead Zone)๊ฐ€ ์กด์žฌํ•œ๋‹ค.
  • ์ด๋Ÿฐ ๋ฐฉ๋ฒ•์œผ๋กœ ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š์€ ๊ฐ’์„ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์„ ๋ง‰๋Š”๋‹ค.
  • ์˜ˆ์•ฝ์–ด (Reserved Word)

  • ํŠน๋ณ„ํ•œ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด, ๋ณ€์ˆ˜๋‚˜ ํ•จ์ˆ˜ ์ด๋ฆ„ ๋“ฑ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๋‹จ์–ด
  • ๊ทธ ์™ธ ์˜ˆ์•ฝ์–ด๋“ค
  • var์˜ ๋ฌธ์ œ์ 

  • ์ค‘๊ฐ„์— ๊ฐ™์€ ์ด๋ฆ„์˜ ๋ณ€์ˆ˜๋ฅผ ๋‹ค์‹œ ์„ ์–ธํ•ด๋„ ๊ธฐ์กด์˜ ๋ณ€์ˆ˜์— ๋ฎ์–ด ์”Œ์šด๋‹ค.
  • var name = "์žฅ๊ฒฝ์€";
    var name = "๊ฒฝ์€";
    console.log(name);
    // ๊ฒฝ์€
  • let์ด๋‚˜ const๋Š” ์œ„์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•˜๋ฉด โ€œalready been declaredโ€๋ผ๊ณ  ์—๋Ÿฌ๋ฅผ ๋„์›Œ์ค€๋‹ค.
  • ๐Ÿšย ์ž๋ฃŒํ˜•

    String

  • ๋ฌธ์žํ˜• ๋ฐ์ดํ„ฐ์ด๋‹ค.
  • ๋ฐฑํ‹ฑ(`) ์•ˆ์—์„œ๋Š” ${}๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ทธ ์•ˆ์— ๋ณ€์ˆ˜๋ช…์ด ์ธ์‹๋˜๋„๋ก ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • let myName = "Kyung-eun";
    let hello = `Hello, ${myName}`;
    console.log(hello);
    // Hello, Kyung-eun

    Number

  • ์ˆซ์žํ˜• ๋ฐ์ดํ„ฐ์ด๋‹ค.
  • BigInt๋Š” ์›์‹œ ๊ฐ’์ด ์•ˆ์ •์ ์œผ๋กœ ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€์น˜์ธ 2^53 - 1๋ณด๋‹ค ํฐ ์ •์ˆ˜๋ฅผ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๋‚ด์žฅ ๊ฐ์ฒด์ด๋‹ค.
  • ๋’ค์— n์ด ๋ถ™์–ด์„œ ๋ฆฌํ„ด๋œ๋‹ค.
  • let num1 = 123;
    let num2 = 0.1;
    let bigNum = BigInt(9007199254740991);
    console.log(num1 * num2); // 12.3
    console.log(bigNum); // 9007199254740991n

    Boolean

  • ์ฐธ, ๊ฑฐ์ง“ ๋ฐ์ดํ„ฐ์ด๋‹ค.
  • let bool1 = true;
    if (bool1) {
    console.log(bool1); // true
    }

    Undefined

  • ๊ฐ’์ด ํ• ๋‹น๋˜์ง€ ์•Š์€ ์ƒํƒœ๋ฅผ ํ‘œ๊ธฐ (C์–ธ์–ด์—์„œ์˜ ์“ฐ๋ ˆ๊ธฐ๊ฐ’)
  • let undef;
    let arr = [1, 2, 3];
    console.log(undef); // undefined
    console.log(arr[3]); // undefined

    Null

  • ์–ด๋–ค ๊ฐ’์ด ์˜๋„์ ์œผ๋กœ ๋น„์–ด ์žˆ์Œ์„ ์˜๋ฏธํ•  ๋•Œ ์‚ฌ์šฉ
  • let empty = null;
    console.log(empty); // null

    Array

  • ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒํ˜• (๋ฐฐ์—ด)
  • let data = [1, "Apple", false, null, undefined];
    let arr = new Array(5);
    console.log(data[0], data[1], data[2], data[3], data[4]);
    // 1 'Apple' false null undefined
    console.log(arr);
    // [ <5 empty items> ]
    console.log(arr[0]);
    // undefined

    Object

  • ๊ฐ์ฒด๋Š” ํ‚ค(key)์™€ ๊ฐ’(value)์œผ๋กœ ๊ตฌ์„ฑ๋œ ํ”„๋กœํผํ‹ฐ(property)์˜ ์ง‘ํ•ฉ์ด๋‹ค.
  • ๊ฐ์ฒด๋ฅผ ๋ฐฐ์—ด์— ๋‹ด์•„์„œ ์“ธ ์ˆ˜๋„ ์žˆ๋‹ค.
  • let student = {
    name: "์žฅ๊ฒฝ์€",
    age: 27,
    hobby: ["basketball", "music"]
    }
    console.log(student);
    // { name: '์žฅ๊ฒฝ์€', age: 27, hobby: [ 'basketball', 'music' ] }
    console.log(student.name);
    // '์žฅ๊ฒฝ์€'
    console.log(student['name']);
    // '์žฅ๊ฒฝ์€'

    typeof

  • ์ž๋ฃŒํ˜•์„ ์•Œ๋ ค์ค€๋‹ค.
  • let num = 1;
    let str = "์žฅ๊ฒฝ์€";
    let bool = true;
    let undef = undefined;
    let nul = null;
    let arr = [1, 2, 3];
    let obj = {
    num: 1,
    str: "String"
    }
    console.log(typeof num);
    // number
    console.log(typeof str);
    // string
    console.log(typeof(bool)); // ๊ด„ํ˜ธ๋กœ๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ. ๋„์–ด์“ฐ๊ธฐ ์ฃผ์˜
    // boolean
    console.log(typeof undef);
    // undefined
    console.log(typeof(nul));
    // object
    console.log(typeof(arr));
    // object
    console.log(typeof obj);
    // object
    console.log(typeof "์žฅ๊ฒฝ์€");
    // string (๋ณ€์ˆ˜๋ช…์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ ๊ฐ€๋Šฅ)

    ํ˜•๋ณ€ํ™˜

    String(), Number(), Boolean()

    // ๋ฌธ์ž ๋ฐ์ดํ„ฐ๋กœ ๋ณ€ํ™˜
    let num = 123;
    num = String(num);
    console.log(typeof num); // string
    // ์ˆซ์ž ๋ฐ์ดํ„ฐ๋กœ ๋ณ€ํ™˜
    num = Number(num);
    console.log(typeof num); // number
    console.log(Number("abcdefg")); // NaN
    // Boolean ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜
    console.log(Boolean(1)); // true
    console.log(Boolean(2)); // true
    console.log(Boolean(-1)); // true
    console.log(Boolean(0)); // false
    console.log(Boolean("์žฅ๊ฒฝ์€")); // true
    console.log(Boolean("0")); // true
    console.log(Boolean("")); // false
    console.log(Boolean(" ")); // true
    console.log(Boolean(null)); // false
    console.log(Boolean(undefined)); // false
    console.log(Boolean(NaN)); // false

    parseInt()์™€ Number()์˜ ์ฐจ์ด

  • parseInt๋Š” ์ •์ˆ˜๋กœ ๋งŒ๋“ค์–ด ์ถœ๋ ฅํ•œ๋‹ค.
  • let test = '10.12345';
    parseInt(test); // 10
    Number(test); // 10.12345
    parseFloat(test); // 10.12345
  • parseInt๋Š” ๋ฌธ์ž์—ด์ด ๋’ค์— ๋ถ™์–ด์žˆ์–ด๋„ ์ˆซ์ž๋ฅผ ๋ฝ‘์•„๋‚ธ๋‹ค.
  • let test = '2020๋…„๋„';
    parseInt(test); // 2020
    Number(test); // NaN
  • ๊ทธ๋Ÿฌ๋‚˜ ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•˜๋ฉด NaN๊ฐ€ ๋‚˜์˜จ๋‹ค.
  • let test = '์ œ1ํšŒ';
    parseInt(test); // NaN
    Number(test); // NaN

    ๐Ÿ’ซย ์—ฐ์‚ฐ์ž

    ๊ธฐ๋ณธ ์—ฐ์‚ฐ์ž

  • ์‚ฌ์น™์—ฐ์‚ฐ: +, -, *, /
  • %: ๋‚˜๋จธ์ง€ ์—ฐ์‚ฐ์ž
  • **: ๊ฑฐ๋“ญ ์ œ๊ณฑ
  • ์ฆ๊ฐ€, ๊ฐ์†Œ ์—ฐ์‚ฐ์ž
  • ์—ฐ์‚ฐ์ž ์ค„์—ฌ์„œ ์“ฐ๊ธฐ
  • ๋น„๊ต ์—ฐ์‚ฐ์ž

  • ๋น„๊ต์—ฐ์‚ฐ์ž(==) ๋Œ€์‹  ์ผ์น˜์—ฐ์‚ฐ์ž(===) ์‚ฌ์šฉ์„ ์ƒํ™œํ™”!
  • ๋น„๊ต์—ฐ์‚ฐ์ž ์ข…๋ฅ˜
  • ๋…ผ๋ฆฌ์—ฐ์‚ฐ์ž ์ข…๋ฅ˜
  • ๐ŸŒทย ์กฐ๊ฑด๋ฌธ

    If๋ฌธ

    if (true) {
    console.log("true ์ž…๋‹ˆ๋‹ค.");
    } else {
    console.log("์–ด์ฐจํ”ผ ์ถœ๋ ฅ ์•ˆ๋จ");
    }

    Switch๋ฌธ

    let gender = "F";
    switch (gender) {
    case 'F':
    console.log("์—ฌ์„ฑ์ž…๋‹ˆ๋‹ค.");
    break;
    case "M":
    console.log("๋‚จ์„ฑ์ž…๋‹ˆ๋‹ค.");
    break;
    default:
    console.log("์™ธ๊ณ„์ธ์ž…๋‹ˆ๋‹ค.");
    break;
    }
  • Switch๋ฌธ์€ ์ž˜ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜๋Š”๋ฐ ๋‚˜์ค‘์— Redux์—์„œ Switch๋ฌธ์„ ์“ธ ์ผ์ด ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค.
  • ๐Ÿ”ฎย ๋ฐ˜๋ณต๋ฌธ

    For๋ฌธ

    for (let i = 0; i < 10; i++) {
    console.log(`์ธ์‚ฌ๐Ÿ™‡โ€โ™‚๏ธ ${i}๋ฒˆ์งธ`);
    }

    While๋ฌธ

    let i = 1;
    while (i <= 10) {
    console.log(`์ธ์‚ฌ๐Ÿ™‡โ€โ™‚๏ธ ${i}๋ฒˆ์งธ`);
    i++;
    }

    Do While๋ฌธ

  • ์กฐ๊ฑด์— ๊ด€๊ณ„์—†์ด ์ตœ์†Œ 1๋ฒˆ์€ ์‹คํ–‰๋œ๋‹ค.
  • let k = 1;
    do {
    console.log(`์ธ์‚ฌ๐Ÿ™‡โ€โ™‚๏ธ ${k}๋ฒˆ์งธ`);
    k++;
    } while (k <= 10);

    break

  • ๋ฉˆ์ถ”๊ณ  ํ•ด๋‹น ๋ฐ˜๋ณต๋ฌธ์„ ๋น ์ ธ๋‚˜์˜จ๋‹ค.
  • let j = 1;
    while (true) {
    if (j === 11) {
    break;
    }
    console.log(`์ธ์‚ฌ๐Ÿ™‡โ€โ™‚๏ธ ${j}๋ฒˆ์งธ`);
    j++;
    }

    countinue

  • if ์•ˆ์— continue๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด if๋ฌธ์ด ์ž‘๋™ํ•  ๋•Œ๋งŒ ํ•ด๋‹น ์ธ๋ฑ์Šค์˜ ์‹คํ–‰์„ ์Šคํ‚ตํ•œ๋‹ค. (๋ฉˆ์ถ”์ง€ ์•Š๊ณ  ๊ณ„์† ์ง„ํ–‰)
  • for (let i = 1; i <= 5; i++) {
    if (i === 3) {
    continue;
    }
    console.log(i);
    }
    // 1
    // 2
    // 4
    // 5

    ๐Ÿย ํ•จ์ˆ˜

  • ํŠน์ • ๋™์ž‘(๊ธฐ๋Šฅ)์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์ผ๋ถ€ ์ฝ”๋“œ์˜ ์ง‘ํ•ฉ(๋ถ€๋ถ„)
  • function sayHello(name) {
    console.log(`์•ˆ๋…•ํ•˜์„ธ์š” ${name}๋‹˜!`);
    }