GiantStepDEV
article thumbnail

ES5(ECMAScript 5)

  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ 5๋ฒˆ์งธ ๋ฒ„์ „์œผ๋กœ, 2009๋…„์— ๋ฐœํ‘œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ES5๋Š” ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ ๋ณด๋‹ค๋Š” ๊ธฐ์กด์˜ ๊ธฐ๋Šฅ์„ ๊ฐœ์„ ํ•˜๋Š”๋ฐ ์ดˆ์ ์„ ๋งž์ท„์Šต๋‹ˆ๋‹ค.
  • ๊ฐœ์„ ๋œ ๊ธฐ๋Šฅ์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

JSON ๊ฐ์ฒด

  • JSON(JavaScript Object Notation)์€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ๋Ÿ‰ ๋ฐ์ดํ„ฐ ํ˜•์‹ ์ž…๋‹ˆ๋‹ค.
  • ES5์—์„œ๋Š” JSON.parse() ์™€ JSON.stringify() ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ JSON ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
let data = '{"name":"John", "age":30}';
let obj = JSON.parse(data);
console.log(obj.name); // "John"
console.log(JSON.stringify(obj)); // "{"name":"John","age":30}"

Array ๋ฉ”์†Œ๋“œ

๊ธฐ์กด Array ๋ฉ”์†Œ๋“œ์— ์ƒˆ๋กœ์šด ๋ฉ”์†Œ๋“œ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋”์šฑ ๊ฐ„๋‹จํ•˜๊ณ  ํšจ์œจ์ ์ธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • forEach() : ๋ฐฐ์—ด์˜ ๊ฐ ์š”์†Œ๋ฅผ ์ˆœํšŒํ•˜๋ฉฐ, ์š”์†Œ์— ๋Œ€ํ•ด ์ง€์ •๋œ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฉ”์†Œ๋“œ
  • โญ๏ธ map() : ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ์ˆœํšŒํ•˜๋ฉด์„œ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  • filter() : ๋ฐฐ์—ด์˜ ์š”์†Œ ์ค‘์—์„œ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์š”์†Œ๋งŒ ์ถ”์ถœํ•˜์—ฌ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  • reduce() : ๋ฐฐ์—ด์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ์ˆœํšŒํ•˜๋ฉฐ, ์ˆœํšŒ ๊ณผ์ •์—์„œ ๋ˆ„์ ๊ฐ’์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•˜๋‚˜์˜ ๊ฒฐ๊ณผ๊ฐ’์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
let numbers = [1,2,3,4,5,6,7,8,9,10];
numbers.forEach((num) => console.log(num));

let squares = numbers.map(num => num * num);
console.log(squares);

let evenNumbers = numbers.filter(num => num % 2 == 0);
console.log(evenNumbers);

let sum1 = numbers.reduce((tot, num) => tot + num, 0);
console.log(sum1);
1
2
3
4
5
6
7
8
9
10
[
   1,  4,  9, 16,  25,
  36, 49, 64, 81, 100
]
[ 2, 4, 6, 8, 10 ]
55

ES6(ECMAScript 6)

  • ECMAScript 6์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ 6๋ฒˆ์งธ ๋ฒ„์ „์œผ๋กœ 2015๋…„์— ๋ฐœํ‘œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ES6์€ ์ด์ „ ๋ฒ„์ „์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ณด๋‹ค ๋”์šฑ ๊ฐ•๋ ฅํ•˜๊ณ  ํšจ์œจ์ ์ธ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

let, const

ES6์—์„œ๋Š” let๊ณผ const ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•ฉ๋‹ˆ๋‹ค.

let์€ ๋ธ”๋ก ์Šค์ฝ”ํ”„ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๊ณ , const๋Š” ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅํ•œ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•ฉ๋‹ˆ๋‹ค.

const arr = [1, 2, 3];
arr[0] = 100;
// ์˜ค๋ฅ˜๊ฐ€ ์•ˆ๋‚˜๋Š” ์ด์œ  : ์ฐธ์กฐ ์ฃผ์†Œ๋Š” ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๊ณ , ์ฃผ์†Œ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ’๋งŒ ๋ณ€๊ฒฝ๋๊ธฐ ๋•Œ๋ฌธ์—..
// ์ •๋ฆฌํ•˜๋ฉด property, value๋Š” const๋„ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ
console.log(arr); // [100, 2, 3]

// arr = [4,5,6]; // const์— ์ƒˆ๋กœ์šด ๊ฐ์ฒด ์ฐธ์กฐ ์ฃผ์†Œ๋ฅผ ๋Œ€์ž…ํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฅ˜.

const arr1 = [1, 2, 3];
const arr2 = arr1.concat([4, 5, 6]);
console.log(arr2);
console.log(arr1); // ๋ณ€ํ˜•๋˜์ง€ ์•Š์Œ.

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

ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋Š” ๊ฐ„๋‹จํ•˜๊ณ  ๊ฐ„๊ฒฐํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š”๋ฐ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

const add = (num1, num2) => console.log(num1 + num2);
add(4, 3);

// โœจ ํ™”์‚ดํ‘œ ํ•จ์ˆ˜ ์‚ฌ์šฉ์‹œ this ๋ฌธ์ œ ํ•ด๊ฒฐ ๊ฐ€๋Šฅ!
/* ๊ธฐ์กด์˜ ํ•จ์ˆ˜ ์ •์˜ ๋ฐฉ์‹์—์„œ ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ this ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉ ํ•  ๋•Œ,
ํ˜ธ์ถœ๋˜๋Š” ์œ„์น˜์— ๋”ฐ๋ผ ์ฐธ์กฐํ•˜๋Š” ๊ฐ์ฒด๊ฐ€ ๋‹ค๋ฅด๊ฒŒ ๊ฒฐ์ •๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์Œ */
const obj = {
  name: "ํ™๊ธธ๋™",
  func1() {
    const func2 = function () {
      console.log(this.name);
    };
    func2();
  },
};
obj.func1(); // undefined

const obj2 = {
  name: "ํ™๊ธธ๋™",
  func1() {
    const func2 = () => console.log(this.name);
    func2();
  },
};
obj2.func1(); // ํ™๊ธธ๋™

/* --------------------------------------------- */
const btn1 = document.getElementById("myButton1");
const btn2 = document.getElementById("myButton2");

btn1.addEventListener("click", () => console.log(this));
// ์ด ๋•Œ๋Š” this ๋ง๊ณ  btn1 ๋„ฃ์œผ๋ฉด ์ •์ƒ์ ์œผ๋กœ ์ฐพ์•„์คŒ. ใ…‹ใ…‹

btn2.addEventListener("click", function () {
  console.log(this);
});
/* --------------------------------------------- */
const pBtn = document.getElementById("pButton");
const pEls = document.querySelectorAll("p");
pBtn.addEventListener("click", () => pEls.forEach((e) => console.log(e)));

ํ…œํ”Œ๋ฆฟ ๋ฆฌํ„ฐ๋Ÿด

  • ๋ฐฑํ‹ฑ(``)์œผ๋กœ ๋ฌถ๋Š” ๋ฌธ์ž์—ด์„ ํ…œํ”Œ๋ฆฟ ๋ฆฌํ„ฐ๋Ÿด์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
  • ํ…œํ”Œ๋ฆฟ ๋ฆฌํ„ฐ๋Ÿด์€ ๋ณ€์ˆ˜๋ฅผ ์‰ฝ๊ฒŒ ํฌํ•จํ•  ์ˆ˜ ์žˆ๊ณ , ์—ฌ๋Ÿฌ ์ค„์˜ ๋ฌธ์ž์—ด์„ ์‰ฝ๊ฒŒ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
const userName = "ํ™๊ธธ๋™";
const season = "๋ด„";
const message = `์•ˆ๋…•ํ•˜์„ธ์š”, ${userName}๋‹˜, ${season}์ด ์™”์Šต๋‹ˆ๋‹ค.`;
console.log(message);
์•ˆ๋…•ํ•˜์„ธ์š”, ํ™๊ธธ๋™๋‹˜, ๋ด„์ด ์™”์Šต๋‹ˆ๋‹ค.

์ „๊ฐœ ์—ฐ์‚ฐ์ž(Spread operator)

  • ๋ฐฐ์—ด์ด๋‚˜ ๊ฐ์ฒด๋ฅผ ๊ฐœ๋ณ„ ์š”์†Œ๋กœ ๋ถ„๋ฆฌ
const arr3 = [1,2,3];
const arr4 = [4,5,6];
const newArr = [...arr3, ...arr4];
console.log(newArr);

const arr5 = [1,2,3,4,5,100];
const arr6 = [...arr5];
console.log(arr6);

// ์ „๊ฐœ ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•œ ๊ฐ€๋ณ€ ์ธ์ˆ˜ ํ•จ์ˆ˜ ๋งŒ๋“ค๊ธฐ
function sum(...numbers) {
  return numbers.reduce((tot, num) => tot + num, 0);
}
console.log(sum(1,2,3,4,5,6,7,8,9,10));
[ 1, 2, 3, 4, 5, 6 ]
[ 1, 2, 3, 4, 5, 100 ]
55
profile

GiantStepDEV

@kongmi

ํฌ์ŠคํŒ…์ด ์ข‹์•˜๋‹ค๋ฉด "์ข‹์•„์š”โค๏ธ" ๋˜๋Š” "๊ตฌ๋…๐Ÿ‘๐Ÿป" ํ•ด์ฃผ์„ธ์š”!