๊นœ์ง€

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฌธ๋ฒ• ์ด์ •๋ฆฌํŒ

์ธํŒŒ_ 2021. 10. 20. 18:33

JavaScript

 

๐Ÿ“Œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํƒ€์ž…

  • number, string, boolean,
  • object(function, array, data, regexp),
  • null, undefined
  • Symbol

๐Ÿ“Œ getter & setter

  • getter ๋ฉ”์„œ๋“œ๋Š” obj.propName์„ ์‚ฌ์šฉํ•ด ํ”„๋กœํผํ‹ฐ๋ฅผ ์ฝ์œผ๋ ค๊ณ  ํ•  ๋•Œ ์‹คํ–‰
  • setter ๋ฉ”์„œ๋“œ๋Š” obj.propName = value์œผ๋กœ ํ”„๋กœํผํ‹ฐ์— ๊ฐ’์„ ํ• ๋‹นํ•˜๋ ค ํ•  ๋•Œ ์‹คํ–‰
let user = {
  name: "John",
  surname: "Smith",

  get fullName() { //ํ•จ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ ๊ทธ๋ƒฅ ํ”„๋กœํผํ‹ฐ. ํ˜ธ์ถœํ•˜๋ฉด getterํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰
    return `${this.name} ${this.surname}`;
  }
  
  set fullName(value) { //ํ•จ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ ๊ทธ๋ƒฅ ํ”„๋กœํผํ‹ฐ. ํ˜ธํ’€ํ•˜๋ฉด setterํ•จ์ˆ˜๊ฐ€ ์‹คํ–‰
    [this.name, this.surname] = value.split(" ");
  }
};

// ์ฃผ์–ด์ง„ ๊ฐ’์„ ์‚ฌ์šฉํ•ด set fullName์ด ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
user.fullName = "Alice Special"

alert(user.fullName); // Alice Special
alert(user.name); // Alice
alert(user.surname); // Special

์ด๋ ‡๊ฒŒ getter์™€ setter ๋ฉ”์„œ๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๋ฉด ๊ฐ์ฒด์—” fullName์ด๋ผ๋Š” '๊ฐ€์ƒ’์˜ ํ”„๋กœํผํ‹ฐ๊ฐ€ ์ƒ๊น๋‹ˆ๋‹ค.

๊ฐ€์ƒ์˜ ํ”„๋กœํผํ‹ฐ๋Š” ์ฝ๊ณ  ์“ธ ์ˆœ ์žˆ์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

 

[JS] ๐Ÿ“š getter & setter ๋ž€?

ํ”„๋กœํผํ‹ฐ getter์™€ setter ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ๋Š” ๋‘ ์ข…๋ฅ˜๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ ์ข…๋ฅ˜๋Š” ๋ฐ์ดํ„ฐ ํ”„๋กœํผํ‹ฐ(data property) ์ž…๋‹ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ ์‚ฌ์šฉํ•œ ๋ชจ๋“  ํ”„๋กœํผํ‹ฐ๋Š” ๋ฐ์ดํ„ฐ ํ”„๋กœํผํ‹ฐ์ž…๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ๋Š” ์ ‘๊ทผ

inpa.tistory.com


๐Ÿ“Œ label ๋ฌธ

์ด๋ฆ„ํ‘œ ๋กœ ์ง€์ •๋œ c์–ธ์–ด์˜ goto๋ฌธ ์ •๋„๋กœ ์ƒ๊ฐํ•ด ๋‘์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๋ณดํ†ต, ๋ ˆ์ด๋ธ”์€ ๋ฐ˜๋ณต๋ฌธ์—์„œ ์“ฐ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ๋„ break์™€ continue ๋ฌธ๊ณผ ๊ฐ™์ด ์“ฐ์ด๊ฒŒ ๋˜์ฃ .

  • break ๋ ˆ์ด๋ธ”๋ช…;
  • continue ๋ ˆ์ด๋ธ”๋ช…;
 for(var i = 0; i < a.length; i++){
       for(var j = 0; j< a[i].length; j++){
           document.write(a[i][j] + "<br>");
           if(a[i][j] == 22){
                break; 
           }
      }

      if(a[i][j] == 22){
        break; // ์™„์ „ํžˆ ๋ฃจํ”„๋ฌธ์„ ๋น ์ ธ๋‚˜์˜ค๋ ค๋ฉด ์กฐ๊ฑด์‹๊ณผ break๋ฌธ์ด ์—ฌ๋Ÿฌ๋ฒˆ ์“ฐ์ด๊ฒŒ ๋œ๋‹ค.     
      } 
}
 outsideFor: // ๋ ˆ์ด๋ธ”
 for(var i = 0; i < a.length; i++){
      insideFor:
      for(var j = 0; j< a[i].length; j++){
           document.write(a[i][j] + "<br>");
           if(a[i][j] == 22){
                break outsideFor; // ๋‹จ ํ•œ๋ฒˆ์˜ ์ฒ˜๋ฆฌ๋กœ ์ค‘์ฒฉ ๋ฃจํ”„๋ฌธ์„ ๋น ์ ธ๋‚˜์˜จ๋‹ค.
           }
      }
 }

๐Ÿ“Œ var, let, const

์ค‘๋ณต ์„ ์–ธ ๊ฐ€๋Šฅ ์—ฌ๋ถ€
var : ์ค‘๋ณตํ•ด์„œ ์„ ์–ธ(+์ดˆ๊ธฐํ™”)๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค
const, let : ์ค‘๋ณต ์„ ์–ธ ๋ถˆ๊ฐ€๋Šฅ
โ€‹
์žฌํ• ๋‹น ๊ฐ€๋Šฅ ์—ฌ๋ถ€
var, let : ๊ฐ’์˜ ์žฌํ• ๋‹น์ด ๊ฐ€๋Šฅํ•œ ๋ณ€์ˆ˜๋‹ค.
const : ๊ฐ’์˜ ์žฌํ• ๋‹น์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ์ƒ์ˆ˜๋‹ค.
* var ๋˜๋Š” let๊ณผ ๋‹ฌ๋ฆฌ, const ์„ ์–ธ์—์„œ๋Š” ๋ฐ˜๋“œ์‹œ ๊ฐ’์„ ์„ ์–ธ๊ณผ ๋™์‹œ์— ์ •์˜ํ•ด์•ผ ํ•œ๋‹ค
โ€‹
๋ณ€์ˆ˜ ์Šค์ฝ”ํ”„ ์œ ํšจ๋ฒ”์œ„
var : ํ•จ์ˆ˜ ๋‚ด๋ถ€์— ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋งŒ ์ง€์—ญ ๋ณ€์ˆ˜๋กœ ์ธ์ •ํ•˜๋Š” ํ•จ์ˆ˜ ๋ ˆ๋ฒจ ์Šค์ฝ”ํ”„
let, const : ๋ชจ๋“  ๋ธ”๋ก ๋‚ด๋ถ€์—์„œ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๊นŒ์ง€ ์ง€์—ญ๋ณ€์ˆ˜๋กœ ์ธ์ •ํ•˜๋Š” ๋ธ”๋ก ๋ ˆ๋ฒจ ์Šค์ฝ”ํ”„
โ€‹
๋ณ€์ˆ˜ ํ˜ธ์ด์ŠคํŒ… ๋ฐฉ์‹
var: ๋ณ€์ˆ˜ ํ˜ธ์ด์ŠคํŒ…์ด ๋ฐœ์ƒํ•œ๋‹ค. ๋ฐ”๋กœ undefined๊ฐ’์ด ๋“ค์–ด๊ฐ„๋‹ค.
let, const: ๋ณ€์ˆ˜ ํ˜ธ์ด์ŠคํŒ…์ด ๋ฐœ์ƒํ•œ๋‹ค. ํ•˜์ง€๋งŒ ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•œ๋‹ค. ๊ฐ’์ด ๋“ค์–ด๊ฐ€์ง€ ์•Š๋Š”๋‹ค.
โ€‹
์ „์—ญ๊ฐ์ฒด ํ”„๋กœํผํ‹ฐ ์—ฌ๋ถ€
var : var๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ์ „์—ญ๊ฐ์ฒด(๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ์˜ ๊ฒฝ์šฐ window)์˜ ํ”„๋กœํผํ‹ฐ๋‹ค.
let, const : let/const ๋กœ ์„ ์–ธ๋œ ๋ณ€์ˆ˜๋Š” ์ „์—ญ๊ฐ์ฒด ํ”„๋กœํผํ‹ฐ๊ฐ€ ์•„๋‹ˆ๋‹ค.

 

[JS] ๐Ÿ“š var, let, const ์ฐจ์ด์  (๋ณ€์ˆ˜ ํ˜ธ์ด์ŠคํŒ…)

โ€‹ var, let, const ์ฐจ์ด์  5๊ฐ€์ง€ 1. ์ค‘๋ณต ์„ ์–ธ ๊ฐ€๋Šฅ ์—ฌ๋ถ€ 2. ์žฌํ• ๋‹น ๊ฐ€๋Šฅ ์—ฌ๋ถ€ 3. ๋ณ€์ˆ˜ ์Šค์ฝ”ํ”„ ์œ ํšจ๋ฒ”์œ„ 4. ๋ณ€์ˆ˜ ํ˜ธ์ด์ŠคํŒ… ๋ฐฉ์‹ 5. ์ „์—ญ๊ฐ์ฒด ํ”„๋กœํผํ‹ฐ ์—ฌ๋ถ€ โ€‹ ์ค‘๋ณต ์„ ์–ธ ๊ฐ€๋Šฅ ์—ฌ๋ถ€ var : ์ค‘๋ณตํ•ด์„œ ์„ ์–ธ(+

inpa.tistory.com


๐Ÿ“Œ ํƒ€์ž… ๋ณ€ํ™˜

์ˆซ์ž -> ๋ฌธ์ž์—ด ๋ณ€ํ™˜

String(123);
123.toString()

 

๋ฌธ์ž์—ด -> ์ˆซ์ž ๋ณ€ํ™˜

Number("123")
parseInt("123")
parseFloat("123.1")

 

โ€‹๊ฐ’ -> ๋ถˆ๋ฆฌ์–ธ ๋ณ€ํ™˜

๋ณ€์ˆ˜๋ฅผ !๋กœ falseํ•˜๊ณ  ๋‹ค์‹œ !๋กœ ํ•˜๋ฉด์„œ, ๊ฐ’์€ ์œ ์ง€ํ•˜๋ฉด์„œ ๋ถˆ๋ฆฌ์–ธ์œผ๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค.

!!a
 

[JS] ๐Ÿ“š ํƒ€์ž… ๋ณ€ํ™˜

๊ธฐ๋ณธ ํƒ€์ž… ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ํ˜•ํƒœ์˜ ํƒ€์ž…์„ ๋ฏธ๋ฆฌ ์ •์˜ํ•˜์—ฌ ์ œ๊ณตํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ์ด๊ฒƒ์„ ๊ธฐ๋ณธ ํƒ€์ž…์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๊ธฐ๋ณธ ํƒ€์ž…์€ ํฌ๊ฒŒ ์›์‹œ ํƒ€์ž…๊ณผ ๊ฐ์ฒด ํƒ€์ž…์œผ๋กœ ๊ตฌ๋ถ„ํ• 

inpa.tistory.com


๐Ÿ“Œ null, undefined, NaN, Infinity

undefined : ํ•ด๋‹น ๋ณ€์ˆ˜๊ฐ€ ๋น„์–ด์žˆ๋Š” ์ƒํƒœ๋ฅผ ์˜๋ฏธํ•จ.

null : ๊ฐ’์ž์ฒด๊ฐ€ ์—†๋‹ค๋Š” ์˜๋ฏธ๊ฐ€ ์•„๋‹ˆ๋ผ, ๊ฐ’์ด๊ธด ํ•œ๋ฐ ์–ด๋– ํ•œ ์œ ํšจํ•œ ๊ฐ’๋„ ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•จ.

NaN : number ํƒ€์ž…์ด๋ฉฐ, '์ˆซ์ž๊ฐ€ ์•„๋‹˜'์„ ์˜๋ฏธํ•˜๋Š” ์ˆซ์ž.

Infinity : number ํƒ€์ž…์ด๋ฉฐ, '๋ฌดํ•œ๋Œ€'๋ฅผ ์˜๋ฏธํ•˜๋Š” ์ˆซ์ž

๊ฐ’ Boolean ๋ฌธ๋งฅ Number ๋ฌธ๋งฅ String ๋ฌธ๋งฅ
null false 0 "null"
undefined false NaN "undefined"
NaN false NaN "NaN"
Infinity true Infinity "Infinity"
๊ฒฐ๋ก 
1. typeof ์‚ฌ์šฉ์‹œ undefined๋Š” undefined, null์€ object, NaN์€ number๊ฐ€ ๋ฐ˜ํ™˜๋œ๋‹ค.
2. NaN==undefined๋Š” false๋‹ค.
3. NaN==null์€ false๋‹ค.
4. null==undefined๋Š” true๋‹ค.
5. NaN๊ณผ null๊ณผ undefined๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋น„๊ตํ• ๋• false๋กœ ์ทจ๊ธ‰ํ•œ๋‹ค.
6. null์€ ์ˆซ์ž์˜ ๊ฒฝ์šฐ 0์ด ๋œ๋‹ค.
7. undefined๋Š” ์ˆซ์ž์˜ ๊ฒฝ์šฐ NaN์ด ๋œ๋‹ค.
6. NaN์˜ ๋น„๊ต๋Š” isNaN์œผ๋กœ ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ๊ฒฐ๊ณผ๋ฅผ ์˜ˆ์ธกํ•  ์ˆ˜ ์—†๋‹ค.
 

[JS] ๐Ÿ“š null / undefined / NaN / Infinity

null, undefined, NaN, Infinity์— ๋Œ€ํ•œ ๋น„๊ต ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” ์•ฝ๊ฐ„์€ ๋น„์Šทํ•œ ๊ฒƒ ๊ฐ™์œผ๋ฉด์„œ๋„ ์ „ํ˜€ ๋‹ค๋ฅธ 4๊ฐ€์ง€ ๊ฐ’์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋‹ค. undefined ํ•ด๋‹น ๋ณ€์ˆ˜๊ฐ€ ๋น„์–ด์žˆ๋Š” ์ƒํƒœ๋ฅผ ์˜๋ฏธํ•จ. const foo; console.log(fo..

inpa.tistory.com


๐Ÿ“Œ ๋ฐฐ์—ด

/* ์ƒ์„ฑ */

var arrLit = [1, true, "JavaScript"]; // ๋ฐฐ์—ด ๋ฆฌํ„ฐ๋Ÿด์„ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•
var arrObj = Array(1, true, "JavaScript"); // Array ๊ฐ์ฒด์˜ ์ƒ์„ฑ์ž๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•
var arrNewObj = new Array(1, true, "JavaScript"); // new ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•œ Array ๊ฐ์ฒด ์ƒ์„ฑ ๋ฐฉ๋ฒ•
var arrNewObj = new Array(3); // ๋นˆ ๋ฐฐ์—ด length 3 ์ƒ์„ฑ
/* ์ถ”๊ฐ€ */

let animals = [
   ["๊ณ ์–‘์ด", 1],
   ["๊ฐ•์•„์ง€", 2],
   ["๊ฐœ๊ตฌ๋ฆฌ", 3],
];

animals.push(["์ฝ”๋ผ๋ฆฌ", 4]); // animals[3]
animals.unshift(["ํ–„์Šคํ„ฐ", 0]); // animals[0]
animals.splice(4, 0, ["๊ธฐ๋ฆฐ", 5]); // ๋ถ€๋ชจ๋ฐฐ์—ด ์ธ๋ฑ์Šค [4]์— ์ž์‹ ๋ฐฐ์—ด ์ธ๋ฑ์Šค[0]์— ์ถ”๊ฐ€
/* ์‚ญ์ œ */

const numbersArr = ['zero', 'one', 'two', 'three'];

// ์š”์†Œ์˜ ๊ฐ’๋งŒ ์‚ญ์ œ๋œ๋‹ค
delete numbersArr[2]; // (4) ["zero", "one", empty, "three"]

// ์š”์†Œ ๊ฐ’๋งŒ์ด ์•„๋‹ˆ๋ผ ์š”์†Œ๋ฅผ ์™„์ „ํžˆ ์‚ญ์ œํ•œ๋‹ค
numbersArr.splice(2, 1); // (3) ["zero", "one", "three"]
numbersArr.pop(); // ์ƒ์œ„ ๋ฐฐ์—ด ๋งจ ๋ ์š”์†Œ ์‚ญ์ œ // (2) ["zero", "one"]
numbersArr.shift(); // ์ƒ์œ„ ๋ฐฐ์—ด ๋งจ ์•ž ์š”์†Œ ์‚ญ์ œ // (1) ["one"]

arr.length = 0 // ๋ฐฐ์—ด ์ „์ฒด ๋น„์šฐ๊ธฐ
/* ๋ฐฐ์—ด ์—ฌ๋ถ€ ํ™•์ธ */
var arr = [1, true, "JavaScript"]; // ๋ฐฐ์—ด ์ƒ์„ฑ

document.write(typeof arr); // object
document.write(Array.isArray(arr)); // true
document.write(arr instanceof Array); // true

JavaScript

โ€‹์ผ๋ฐ˜์ ์ธ ์–ธ์–ด์˜ ๋ฐฐ์—ด์€ ์ธ๋ฑ์Šค๋กœ ๋ฐฐ์—ด ์š”์†Œ์— ๋น ๋ฅด๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.
ํ•˜์ง€๋งŒ ํŠน์ • ์š”์†Œ๋ฅผ ํƒ์ƒ‰ํ•˜๊ฑฐ๋‚˜ ์š”์†Œ๋ฅผ ์‚ฝ์ž… ๋˜๋Š” ์‚ญ์ œํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ํšจ์œจ์ ์ด์ง€ ์•Š๋‹ค.
โ€‹
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฐฐ์—ด์€ ํ•ด์‹œ ํ…Œ์ด๋ธ”๋กœ ๊ตฌํ˜„๋œ ๊ฐ์ฒด์ด๋ฏ€๋กœ ์ธ๋ฑ์Šค๋กœ ๋ฐฐ์—ด ์š”์†Œ์— ์ ‘๊ทผํ•˜๋Š” ๊ฒฝ์šฐ, ์ผ๋ฐ˜์ ์ธ ๋ฐฐ์—ด๋ณด๋‹ค ์„ฑ๋Šฅ์ ์ธ ๋ฉด์—์„œ ๋Š๋ฆด ์ˆ˜ ๋ฐ–์— ์—†๋Š” ๊ตฌ์กฐ์ ์ธ ๋‹จ์ ์„ ๊ฐ–๋Š”๋‹ค.
ํ•˜์ง€๋งŒ ํŠน์ • ์š”์†Œ๋ฅผ ํƒ์ƒ‰ํ•˜๊ฑฐ๋‚˜ ์š”์†Œ๋ฅผ ์‚ฝ์ž… ๋˜๋Š” ์‚ญ์ œํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ์ผ๋ฐ˜์ ์ธ ๋ฐฐ์—ด๋ณด๋‹ค ๋น ๋ฅธ ์„ฑ๋Šฅ์„ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ๋‹ค.
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋ฐฐ์—ด์€ ์ผ๋ฐ˜์ ์ธ ๋ฐฐ์—ด์˜ ๋™์ž‘์„ ํ‰๋‚ด๋‚ธ ํŠน์ˆ˜ํ•œ ๊ฐ์ฒด
 

[JS] ๐Ÿ“š ๋ฐฐ์—ด ๐Ÿ’ฏ ์ด๋ก  + ํŠน์ง• ์ด์ •๋ฆฌ

๋ฐฐ์—ด์˜ ์ƒ์„ฑ var arrLit = [1, true, "JavaScript"]; // ๋ฐฐ์—ด ๋ฆฌํ„ฐ๋Ÿด์„ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ• var arrObj = Array(1, true, "JavaScript"); // Array ๊ฐ์ฒด์˜ ์ƒ์„ฑ์ž๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฐฉ๋ฒ• var arrNewObj = new Array(1, true,..

inpa.tistory.com


๐Ÿ“Œ Call & apply & Bind

call,apply,bind ์ด๋†ˆ์€ ๋”๋„ ๋ง๊ณ  ๊ทธ๋ƒฅ ์ฐธ์กฐํ•˜๋Š” ํ•จ์ˆ˜ ์กฐ์ž‘์ด๋‹ค.

๋ญ˜ ์กฐ์ž‘ํ•˜๋ƒ๋ฉด, this๋ฅผ ๋ฐ”๊ฟ”์„œ ๋งˆ์น˜ ํ•ด๋‹น ํ•จ์ˆ˜๊ฐ€ ์–ด๋Š ๊ฐ์ฒด ์•ˆ์— ์žˆ๊ฒŒ ํ• ์ˆ˜ ์žˆ๋‹ค.

var obj = { n: 1, yell(){ this.n = 100; } };
var obj2 = { n: 1 };
obj.yell.call(obj2); == obj2.yell(); // ๋งˆ์น˜ obj2๊ฐ์ฒด ์•ˆ์—์„œ yell()์„ ๋ถˆ๋Ÿฌ์˜จ ๊ผด๊ณผ ๊ฐ™๋‹ค.


var arr = [ ... ];
Array.prototype.join.call(arr) == arr.join(); // ๋‘˜์ด ํ•˜๋Š”๊ฑด ๊ฐ™๋‹ค. ํ‘œํ˜„๋งŒ ๋‹ค๋ฅผ๋ถ„

apply๋Š” ์ธ์ˆ˜๋ฅผ ๋ฐฐ์—ด๋กœ ๋ฐ›๋Š” call์ด๋‹ค.

๋ญ”๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ธ์ˆ˜๋ฅผ ์ ์šฉํ•˜๊ณ  ์‹ถ์€๋ฐ, ์ƒ์ˆ˜๊ฐ€ ์•„๋‹Œ ๋ฐฐ์—ด๋ณ€์ˆ˜๋กœ ์ ์šฉํ•˜๋ ค๊ณ  ํ• ๋•Œ ์“ฐ์ธ๋‹ค.

var example = function (a, b, c) {
  return a + b + c;
};
example(1, 2, 3);
example.call(null, 1, 2, 3);
example.apply(null, [1, 2, 3]); //apply๋Š” call์—์„œ ์ธ์ˆ˜๋งŒ ๋ฐฐ์—ด๋กœ
example.bind(null)(1, 2, 3); //bind๋Š” call์ด๋‚˜ apply์™€ ๋น„์Šทํ•˜์ง€๋งŒ ํ˜ธ์ถœ์€ ํ•˜์ง€ ์•Š์ง€ ์•Š๊ณ  ํ•จ์ˆ˜๋งŒ ๋ฐ˜ํ™˜
 

[JS] ๐Ÿ“š Call & Bind & Apply

call โ€‹์›๋ž˜ ํ•จ์ˆ˜๋Š” ์„ ์–ธํ•œ ํ›„ ํ˜ธ์ถœํ•ด์•ผ ์‹คํ–‰๋˜์ฃ . ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ํ•จ์ˆ˜ ๋’ค์— ()๋ฅผ ๋ถ™์ด๋Š” ๊ฒƒ๊ณผ, call ๊ทธ๋ฆฌ๊ณ  applyํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. var example = function (a, b, c) { return a + b + c; }; exampl..

inpa.tistory.com


๐Ÿ“Œ this

  • this๋Š” ํ•จ์ˆ˜ ๋ธ”๋ก ์Šค์ฝ”ํ”„ ๋‚ด์—์„œ ์„ ์–ธ๋˜์•ผ ์ž‘๋™ํ•œ๋‹ค.
  • ๋‚ด๋ถ€ํ•จ์ˆ˜๋Š” ์ฝœ๋ฐฑ์ด๋“  ๋ฆฌ์Šค๋„ˆ๋“  ๋ญ๋“ ๊ฐ„์— ๋ฌด์กฐ๊ฑด this๋Š” ์ „์—ญ๊ฐ์ฒด
  • this์ง€์ • 3๊ฐ€์ง€ ๋ฐฉ๋ฒ•
    - var that = this
    - call,bind,apply
    - ํ™”์‚ดํ‘œ ํ•จ์ˆ˜
  • ์ฝœ๋ฐฑํ•จ์ˆ˜ this ํ•ด๊ฒฐ๋ฒ•
    function getUserName(firstName, lastName, callback) { 
    	callback.call(๊ฐ์ฒด, firstName, lastName); 
    }
  • ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ์˜ ํ•จ์ˆ˜์˜ this๋Š” ์™ธ๋ถ€ํ•จ์ˆ˜์ž„์— ๋ถˆ๊ตฌํ•˜๊ณ  ์ด๋ฒคํŠธ ํƒ€๊ฒŸ์„ ๊ฐ€๋ฆฌํ‚จ๋‹ค.
  • ํ™”์‚ดํ‘œํ•จ์ˆ˜๋Š” this๊ฐ€ ์—†๊ธฐ๋•Œ๋ฌธ์— ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋‚ด์˜ this๋Š” ์™ธ๋ถ€ํ•จ์ˆ˜ this์ด๋‹ค.
 

[JS] ๐Ÿ“š this ์ด์ •๋ฆฌ

this ์ •์˜ let group = { title: "1๋ชจ๋‘ ", students: ["๋ณด๋ผ", "ํ˜ธ์ง„", "์ง€๋ฏผ"], title2 : this.title, title3() { console.log(this.title) } }; console.log(group.title2); //undefined group.title3(); // 1..

inpa.tistory.com


๐Ÿ“Œ ์ฒด์ด๋‹

ํ•จ์ˆ˜์—์„œ ์ž๊ธฐ ์ž์‹  this์„ ๋ฆฌํ„ดํ•˜๋ฉด ์ž๊ธฐ๊ฐ์ฒด๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ธฐ ๋•Œ๋ฌธ์— ์—ฐ์†์œผ๋กœ . ์„ ์‚ฌ์šฉํ• ์ˆ˜ ์žˆ๋‹ค.

let ladder = {
  step: 0,
  up() {
    this.step++;
    return this;
  },
  down() {
    this.step--;
    return this;
  },
  showStep() {
    alert( this.step );
  }
}

ladder.up().up().down().up().down().showStep(); // 1

๐Ÿ“Œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ

try {
    * ์‹คํ–‰ํ•  ์ฝ”๋“œ๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.
    * ์ •์ƒ์ด๋ผ๋ฉด ๋ฌธ์ œ์—†์ด ์‹คํ–‰๋œ๋‹ค. ํ•˜์ง€๋งŒ ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. 
    * ์˜ˆ์™ธ๋Š” throw ๋ฌธ์— ์˜ํ•ด ๋ฐœ์ƒํ•  ์ˆ˜๋„ ์žˆ๊ณ , ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ๋ฉ”์„œ๋“œ์— ์˜ํ•ด ๋ฐœ์ƒํ•  ์ˆ˜๋„ ์žˆ๋‹ค.
} catch (e) {
    * ์ด ๋ธ”๋ก ๋‚ด๋ถ€์˜ ๋ฌธ์žฅ๋“ค์€ ์˜ค์ง try ๋ธ”๋ก์—์„œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ์—๋งŒ ์‹คํ–‰๋œ๋‹ค. 
    * ์ด ๋ฌธ์žฅ๋“ค์—์„  ์ง€์—ญ ๋ณ€์ˆ˜ e๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Error ๊ฐ์ฒด ๋˜๋Š” ์•ž์—์„œ ๋˜์ง„ ๋‹ค๋ฅธ ๊ฐ’์„ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋‹ค. 
    * ์ด ๋ธ”๋ก์—์„œ๋Š” ์–ด๋–ป๊ฒŒ๋“  ๊ทธ ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜๋„ ์žˆ๊ณ ,
    * ๊ทธ๋ƒฅ ์•„๋ฌด๊ฒƒ๋„ ํ•˜์ง€ ์•Š๊ณ  ์˜ˆ์™ธ๋ฅผ ๋ฌด์‹œํ•  ์ˆ˜๋„ ์žˆ๊ณ , 
    * ์•„๋‹ˆ๋ฉด throw ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์˜ˆ์™ธ๋ฅผ ๋‹ค์‹œ ๋ฐœ์ƒ์‹œํ‚ฌ ์ˆ˜๋„ ์žˆ๋‹ค. 
} finally {
    * ์ด ๋ธ”๋ก์—๋Š” try ๋ธ”๋ก์—์„œ ์ผ์–ด๋‚œ ์ผ์— ๊ด€๊ณ„์—†์ด ๋ฌด์กฐ๊ฑด ์‹คํ–‰๋  ์ฝ”๋“œ๊ฐ€ ์œ„์น˜ํ•œ๋‹ค. 
    * ์ด ์ฝ”๋“œ๋Š” try ๋ธ”๋ก์ด ์–ด๋–ป๊ฒŒ๋“  ์ข…๋ฃŒ๋˜๋ฉด ์‹คํ–‰๋œ๋‹ค. 
    * try ๋ธ”๋ก์ด ์ข…๋ฃŒ๋˜๋Š” ์ƒํ™ฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. 
        1) ์ •์ƒ์ ์œผ๋กœ ๋ธ”๋ก์˜ ๋์— ๋„๋‹ฌํ–ˆ์„ ๋•Œ 
        2) break, continue ๋˜๋Š” return ๋ฌธ์— ์˜ํ•ด์„œ 
        3) ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์ง€๋งŒ catch ์ ˆ์—์„œ ์ฒ˜๋ฆฌํ–ˆ์„ ๋•Œ 
        4) ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ๊ณ  ๊ทธ๊ฒƒ์ด ์žกํžˆ์ง€ ์•Š์€ ์ฑ„ ํผ์ ธ๋‚˜๊ฐˆ ๋•Œ 
}
function userException(name, message) { // ์‚ฌ์šฉ์ž ์˜ˆ์™ธ์ฒ˜๋ฆฌ ํ•จ์ˆ˜
    this.name = name;
    this.message = message;
}

function exceptionHandling() {
    try {
        var a = 1;
        var b = 0;
        
        if( b == 0) {
            throw new userException('divideByZeroException', '0์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค');
        }
    } catch(e) {
        if(e instanceof userException) {
            console.log(e.name + "::" + e.message);
        }
        if(e instanceof dataValidationException) {
            console.log(e.name + "::" + e.message);
        }
    } finally {
        console.log("finally excute");
    }
}
 

[JS] ๐Ÿ“š ์˜ˆ์™ธ ์ฒ˜๋ฆฌ

์˜ˆ์™ธ(exception) ์˜ˆ์™ธ(exception)๋ž€ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰ ์ค‘์— ๋ฐœ์ƒํ•˜๋Š” ๋Ÿฐํƒ€์ž„ ์˜ค๋ฅ˜๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ์ด๋Ÿฌํ•œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋„๋ก ๋ฏธ๋ฆฌ ๋ฐฉ์ง€ํ•˜๋Š” ๊ฒƒ๋„ ์ค‘์š”ํ•˜์ง€๋งŒ, ๋ฐœ์ƒํ•œ ์˜ˆ์™ธ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ• ๋˜ํ•œ ๋งค์šฐ

inpa.tistory.com


๐Ÿ“Œ ์•„๊ทœ๋จผํŠธ

function addNum(x=0, y=0, z=0) { // ๋””ํดํŠธ ๋งค๊ฐœ๋ณ€์ˆ˜
    return x + y + z;
}

function sub(...restArgs) {
    console.log(arguments); // arguments ๊ฐ์ฒด = ์œ ์‚ฌ๋ฐฐ์—ด(์ˆœํšŒ๋Š” ๊ฐ€๋Šฅ. ๋‹จ ๋ฐฐ์—ด๋ฉ”์†Œ๋“œ ์‚ฌ์šฉ ๋ถˆ๊ฐ€๋Šฅ)
	console.log(restArgs) // ๋‚˜๋จธ์ง€ ๋งค๊ฐœ๋ณ€์ˆ˜ = ๋ฐฐ์—ด
}

sub(1,2,3,4,5);

JavaScript

 

[JS] ๐Ÿ“š ๋งค๊ฐœ๋ณ€์ˆ˜(์•„๊ทœ๋จผํŠธ)

โ€‹ ๋งค๊ฐœ๋ณ€์ˆ˜(parameter) โ€‹์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•  ๋•Œ๋Š” ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ํƒ€์ž…์„ ๋”ฐ๋กœ ๋ช…์‹œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ์—๋„ ์ธ์ˆ˜(argument)๋กœ ์ „๋‹ฌ๋œ ๊ฐ’์— ๋Œ€ํ•ด ์–ด๋– ํ•œ ํƒ€์ž… ๊ฒ€์‚ฌ๋„ ํ•˜์ง€

inpa.tistory.com


๐Ÿ“Œ ํ™”์‚ดํ‘œ ํ•จ์ˆ˜

  • this๋ฅผ ๊ฐ€์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • arguments๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • new์™€ ํ•จ๊ป˜ ํ˜ธ์ถœํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋Š” super๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

 

โ€‹[ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ๋Š” ์•ˆ๋˜๋Š” ๊ฒฝ์šฐ]

  • ์ผ๋ฐ˜๊ฐ์ฒด์˜ ๋ฉ”์†Œ๋“œ (this๊ฐ€ ์—†์œผ๋‹ˆ๊นŒ)
  • prototype ๋ฉ”์†Œ๋“œ (๋งˆ์ฐฌ๊ฐ€์ง€ ํ”„๋กœํ† ํƒ€์ž… ๊ฐ์ฒด this์ฐธ์กฐ ๋ถˆ๊ฐ€๋Šฅ)
  • ์ƒ์„ฑ์ž ํ•จ์ˆ˜ ๋ฐ new (ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋Š” prototype ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์ง€ ์•Š๋‹ค.)
  • addEventListener ํ•จ์ˆ˜์˜ ์ฝœ๋ฐฑํ•จ์ˆ˜ (this๊ฐ€์—†์œผ๋‹ˆ ์ด๋ฒคํŠธํƒ€๊ฒŸ์„ ๋ชป๊ฐ€์ ธ์˜จ๋‹ค. ๊ฑ ์ผ๋ฐ˜ํ•จ์ˆ˜ ์“ฐ์ž)
  • ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋Š” call, apply, bind ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ this๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋‹ค.
 

[JS] ๐Ÿ“š ํ™”์‚ดํ‘œ ํ•จ์ˆ˜

โ€‹ ํ™”์‚ดํ‘œ ํ•จ์ˆ˜ โ€‹ํ•จ์ˆ˜ ํ‘œํ˜„์‹๋ณด๋‹ค ๋‹จ์ˆœํ•˜๊ณ  ๊ฐ„๊ฒฐํ•œ ๋ฌธ๋ฒ•์œผ๋กœ ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค. โ€‹ ๋ฐ”๋กœ ํ™”์‚ดํ‘œ ํ•จ์ˆ˜(arrow function)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋ผ๋Š” ์ด๋ฆ„์€ ๋ฌธ๋ฒ•์˜ ์ƒ

inpa.tistory.com


๐Ÿ“Œ ํƒ€์ž…์„ ํ™•์ธํ•˜์ž - typeof / instanceof / Object.prototype.toString

// typeof : ํ”ผ์—ฐ์‚ฐ์ž์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ์—ฐ์‚ฐ์ž
typeof 5; // return 'number' 
typeof 'haha'; // return 'string' 
typeof {}; // return 'object' 
typeof []; // return 'object' 
typeof function () {}; // return 'function' 
typeof null; // return 'object'

// instanceof : ๊ฐœ์ฒด๊ฐ€ ํŠน์ • ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค์ธ์ง€ ์—ฌ๋ถ€๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋น„๊ต์—ฐ์‚ฐ์ž
let arr = [1, 2, 3];
alert( arr instanceof Array ); // true
alert( arr instanceof Object ); // true - ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋ฐฐ์—ด์€ ๊ฐ์ฒด์ด๋‹ค. ํฌํ•จ๊ด€๊ณ„

// Object.prototype.toString : toString์˜ ์ˆจ๊ฒจ์ง„ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ฉด ํ™•์žฅ typeof, instanceof์˜ ๋Œ€์•ˆ
let arr = [];
alert(arr); // [object Object]

let objectToString = Object.prototype.toString;
alert( objectToString.call(arr) ); // [object Array]

๐Ÿ“Œ Call by Value & Call by Reference

๋ณ€์ˆ˜๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๊ฐ’์„ ๋ณต์‚ฌํ•˜์—ฌ ์ „๋‹ฌํ•œ๋‹ค๋Š” ๊ด€์ ์—์„œ ๋ฐ”๋ผ๋ณผ ๋•Œ
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ํ•ญ์ƒ ๊ฐ’์— ์˜ํ•œ ์ „๋‹ฌ(Call By Value)๋งŒ ์กด์žฌํ•œ๋‹ค๊ณ  ๋งํ•  ์ˆ˜ ์žˆ๋‹ค.
โ€‹
๊ฐ’์ด ์›์‹œ๊ฐ’์ด๋ƒ ์ฐธ์กฐ๊ฐ’์ด๋ƒ์˜ ์ฐจ์ด๋งŒ ์žˆ์„ ๋ฟ์ด๋‹ค.

์›์‹œ ํƒ€์ž…์˜ ๊ฒฝ์šฐ ์šฐ๋ฆฌ๊ฐ€ ์•Œ๊ณ  ์žˆ๋“ฏ์ด ๊ฐ’์ด ๋ณต์‚ฌ๋˜์–ด ์ „๋‹ฌ๋˜๊ณ 
์ฐธ์กฐ ํƒ€์ž…์˜ ๊ฒฝ์šฐ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์˜ ๊ฐ’(์ฐธ์กฐ๊ฐ’)์ด ๋ณต์‚ฌ๋˜์–ด์„œ ์ „๋‹ฌ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋‘ ๊ฒฝ์šฐ ๋ชจ๋‘ ๋™์ž‘ ์›๋ฆฌ๋Š” ๊ฐ™๋‹ค.
 

[JS] ๐Ÿ“š Call by Value & Call by Reference

Call By Value โ€‹๋จผ์ € ๊ฐ’์— ์˜ํ•œ ์ „๋‹ฌ์— ๋Œ€ํ•œ ํŠน์ง•๋ถ€ํ„ฐ ์‚ดํŽด๋ณด์ž. โ€‹ 1. argument๋กœ ๊ฐ’์ด ๋„˜์–ด์˜จ๋‹ค. 2. ๊ฐ’์ด ๋„˜์–ด์˜ฌ ๋•Œ ๋ณต์‚ฌ๋œ ๊ฐ’์ด ๋„˜์–ด์˜จ๋‹ค. 3. caller(ํ˜ธ์ถœํ•˜๋Š” ๋…€์„)๊ฐ€ ์ธ์ž๋ฅผ ๋ณต์‚ฌํ•ด์„œ ๋„˜๊ฒจ์คฌ์œผ๋ฏ€๋กœ cal

inpa.tistory.com


๐Ÿ“Œ computed property

๊ฐ์ฒด์˜ key๊ฐ’์„ ํ‘œํ˜„์‹(๋ณ€์ˆ˜, ํ•จ์ˆ˜ ๋“ฑ)์„ ํ†ตํ•ด ์ง€์ •ํ•˜๋Š” ๋ฌธ๋ฒ•์ด๋‹ค.

let key = 'name'
let obj = {
    [`${key}`] : 'yujuck' // success
}
var a = "1111";
var s = {
     [a] : 1111;
}
// >> {1111 : 1111}
var Array = [{key:1, value:10},
    {key:2, value:20},
    {key:3, value: 30}];

var result = Array.map(function(el){ 
    // var obj = {};
    // obj[el.key] = el.value;
    // return obj;

    return {[el.key] : el.value};
});
 

[JS] ๐Ÿ“š computed property - ๊ฐ์ฒด Key ๋‚ด์šฉ์„ ๋ณ€์ˆ˜๋กœ

computed property ๊ฐ์ฒด์˜ key๊ฐ’์„ ํ‘œํ˜„์‹(๋ณ€์ˆ˜, ํ•จ์ˆ˜ ๋“ฑ)์„ ํ†ตํ•ด ์ง€์ •ํ•˜๋Š” ๋ฌธ๋ฒ•์ด๋‹ค. โ€‹ ๊ธฐ์กด์˜ ๋Œ€๊ด„ํ˜ธ ํ‘œ๊ธฐ๋ฒ•์€ ๊ฐ์ฒด๊ฐ€ ์„ ์–ธ๋œ ํ›„ ๋‚˜์ค‘์— ํ”„๋กœํผํ‹ฐ๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ ์‚ฌ์šฉํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ, ES6์—์„œ๋Š” computed pro

inpa.tistory.com


๐Ÿ“Œ ์ „๊ฐœ ์—ฐ์‚ฐ์ž

์ „๊ฐœ์—ฐ์‚ฐ์ž๋Š” ๋‹ฌ๋ž‘ ์“ธ ์ˆ˜ ์—†๋‹ค. ํŽผ์ณ์ง„ ๊ฐ์ฒด๋‚˜ ๋ฐฐ์—ด์„ ๋‹ด์„ ๋ฐ”๊ตฌ๋‹ˆ๊ฐ€ ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•˜๋‹ค.

์š”์•ฝ :
"..."๋Š” ์ „๊ฐœ ์—ฐ์‚ฐ์ž๋‚˜ ๋‚˜๋จธ์ง€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

โ€‹

ํ•จ์ˆ˜ ํ˜ธ์ถœ ์‹œ ์‚ฌ์šฉ๋˜๋ฉด ๋ฐฐ์—ด์„ ๋ชฉ๋ก์œผ๋กœ ํ™•์žฅํ•ด์ฃผ๋Š” "์ „๊ฐœ ์—ฐ์‚ฐ์ž"์ž…๋‹ˆ๋‹ค.

ํ•จ์ˆ˜ ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ๋์— ์žˆ์œผ๋ฉด ์ธ์ˆ˜ ๋ชฉ๋ก์˜ ๋‚˜๋จธ์ง€๋ฅผ ๋ฐฐ์—ด๋กœ ๋ชจ์•„์ฃผ๋Š” "๋‚˜๋จธ์ง€ ๋งค๊ฐœ๋ณ€์ˆ˜"์ž…๋‹ˆ๋‹ค.

โ€‹

์‚ฌ์šฉ ํŒจํ„ด :

์ธ์ˆ˜ ๊ฐœ์ˆ˜์— ์ œํ•œ์ด ์—†๋Š” ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค ๋•Œ ๋‚˜๋จธ์ง€ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋งŽ์€ ์ˆ˜์˜ ์ธ์ˆ˜๋ฅผ ๋ฐ›๋Š” ํ•จ์ˆ˜์— ๋ฐฐ์—ด์„ ์ „๋‹ฌํ•  ๋•Œ ์ „๊ฐœ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

const arr = [4, 5, 6];
const arrWrap = [1, 2, 3, ...arr, 7, 8, 9] //์ค‘๊ฐ„์— ๋Œ€์ž… ๊ฐ€๋Šฅ

const arr1 = [1, 2, 3];
const arr2 = [...arr1].reverse(); //reverse๋Š” ๊ทธ ๋ฐฐ์—ด๊ฐ’์„ ๋ฐ”๊ฟ”๋ฒ„๋ฆฌ๋‹ˆ๊นŒ ์ด๋Ÿฐ์‹์œผ๋กœ

/* ๋ฐฐ์—ด ๋ณต์‚ฌ */
var arr = [1,2,3];
var copy1 = arr; // ๋ ˆํผ๋Ÿฐ์Šค ์ด์–ด๋ถ™์ด๊ธฐ
var [...copy2] = arr; // ๋ฐฐ์—ด์„ ์•„์˜ˆ ๋ณต์‚ฌ
var copy3 = [...arr]; // ๋ฐฐ์—ด์„ ์•„์˜ˆ ๋ณต์‚ฌ

/* ๊ฐ์ฒด ๋ณต์‚ฌ */
var prevState = {
  name: "yuddomack",
  birth: "1996-11-01",
  age: 22
};
var state = {
  ...prevState,
  age: 23
}; // { name: 'yuddomack', birth: '1996-11-01', age: 23 }

/* ๋‚˜๋จธ์ง€ ๋งค๊ฐœ๋ณ€์ˆ˜ : ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’๋“ค์„ ๋ฐ”๋กœ ์ง„์งœ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜ */
// ์•„๊ทœ๋จผํŠธ์— ์ „๊ฐœ์—ฐ์‚ฐ์ž๋ฅผ ์“ฐ๋ฉด ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ์ƒˆ๋กœ์šด ๋ฌธ๋ฒ•์ด ๋œ๋‹ค.
(function a(...rest){
    console.log(rest);  // [1, 2, 3, 4, 5]
})(1,2,3,4,5);

/* ์ œ๋„ˆ๋ ˆ์ดํ„ฐ */
function* generateName() {
  yield 'W';
  yield 'O';
  yield 'N';
  yield 'I';
  yield 'S';
  yield 'M';
}
const genForSpread = generateName();
console.log([...genForSpread]); // ['W', 'O', 'N', 'I', 'S', 'M']
 

[JS] ๐Ÿ“š ์ „๊ฐœ ์—ฐ์‚ฐ์ž(Spread ๋ฌธ๋ฒ•)

์ „๊ฐœ ๊ตฌ๋ฌธ(Spread Syntax) โ€‹์ „๊ฐœ ๊ตฌ๋ฌธ(Spread Syntax)๋Š” ECMAScript6(2015)์—์„œ ์ƒˆ๋กœ ์ถ”๊ฐ€๋œ ๋ฌธ๋ฒ•์œผ๋กœ, ๊ฐ„๋‹จํ•˜๊ฒŒ ์ด ๋ฌธ๋ฒ•์€ ๋ฌธ๋ฒ• ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ ๊ฐ์ฒด ํ˜น์€ ๋ฐฐ์—ด๋“ค์„ ํŽผ์น  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด ์ค€๋‹ค. โ€‹ [ ES5 ๋ฐฐ์—ด ๋‚ด์šฉ ์กฐ..

inpa.tistory.com


๐Ÿ“Œ ๋น„๊ตฌ์กฐํ™”(๊ตฌ์กฐ๋ถ„ํ•ด)

๋ฐฐ์—ด์ด๋‚˜ ๊ฐ์ฒด์˜ ์†์„ฑ์„ ํ•ด์ฒดํ•˜์—ฌ ๊ทธ ๊ฐ’์„ ๊ฐœ๋ณ„ ๋ณ€์ˆ˜์— ๋‹ด์„ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ‘œํ˜„์‹.

/* ๋ฐฐ์—ด */
var [a1, a2, ...rest_a] = [1, 2, 3, 4, 5, 6, 7, 8, 9]; 
// a1, a2๋ณ€์ˆ˜์— ํ•„์š”ํ•œ ๋ฐฐ์—ด๊ฐ’์„ ๋„ฃ์–ด์„œ ๋”ฐ๋กœ ์‚ฌ์šฉํ• ์ˆ˜์žˆ๊ฒŒ ๋œ๋‹ค 

/* ๊ฐ์ฒด */
var { a1, a2, ...rest_a } = { a1 : 10, a2 : 20, a3 : 30, a4 : 40 };

/* ๊ฐ์ฒด key๊ฐ’์„ ๋‹ค๋ฅธ์ด๋ฆ„ ๋ณ€์ˆ˜๋กœ ์ €์žฅ  */
var { a1 : awesome_name, a2 : dumb , ...rest_a } = { a1 : 10, a2 : 20, a3 : 30, a4 : 40 };

/* ์ž๋ฃŒํ˜• ํƒ€์ž…์ด ์—†์„์‹œ ()๋ฌถ์–ด ๋ฐ”๋กœ ์ ์šฉ ํ‘œํ˜„ ๊ฐ€๋Šฅ */
({ a, b } = { a : 10, b : 20});

/* ๊ธฐ๋ณธ๊ฐ’ ํ• ๋‹น */
var [a, b=5] = [10];
var {c = 30, d : new_name = 40} = { };

/* ๋ฌธ์ž์—ด */
function fullName(value) {
    [this.name, this.surname] = value.split(" ");
 // [this.name, this.surname] = ["Alice", "Special"];
  }
};
fullName("Alice Special")

/* ๋ฐ˜๋ณต๋ฌธ */
const users = [
  {name: 'kim', age: 10, addr:'kor'},
  {name: 'joe', age: 20, addr:'usa'}
];
for(var {name : n, age : a} of users){
  //๋ณ€์ˆ˜ n๊ณผ a์— ๊ฐ’์„ ๋Œ€์ž…ํ•˜์—ฌ ๋ฐ”๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅ.
}

/* ํ•จ์ˆ˜ ์•„๊ทœ๋จผํŠธ */
const users = [
  {name: 'kim', age: 10, addr:'kor'},
  {name: 'joe', age: 20, addr:'usa'},
];

(function renderUser({name, age, addr}){
})(users[0]);

users.map(({name, age, addr}) => { 
   //map์œผ๋กœ ๊ฐ ๊ฐ์ฒด ํ•˜๋‚˜์”ฉ ์ฐธ์กฐํ•˜๊ฒŒ๋˜๊ณ  ๋น„๊ตฌ์กฐํ™”๋กœ {name, age, addr}์— ๊ฐ๊ฐ ๊ฐ’์„ ๋ณ€์ˆ˜์— ๋Œ€์ž…
});

/* ํด๋ž˜์Šค */
class Student extends Person {
  constructor({grade, ...rest}) {
    // ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    super(rest);
    this.grade = grade;
  }
}
const s = new Student({grade: 3, name: '์œค์•„์ค€', age: 19});
 

[JS] ๐Ÿ“š ๋น„๊ตฌ์กฐํ™”(๊ตฌ์กฐ๋ถ„ํ•ด) ํ• ๋‹น

์ •์˜ '๋น„๊ตฌ์กฐํ™” ํ• ๋‹น(destructuring assignment) ๊ตฌ๋ฌธ์€ ๋ฐฐ์—ด์ด๋‚˜ ๊ฐ์ฒด์˜ ์†์„ฑ์„ ํ•ด์ฒดํ•˜์—ฌ ๊ทธ ๊ฐ’์„ ๊ฐœ๋ณ„ ๋ณ€์ˆ˜์— ๋‹ด์„ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ‘œํ˜„์‹(expression)'์ž…๋‹ˆ๋‹ค. โ€‹ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ •๋ฆฌํ•˜๋ฉด ๋ฐฐ์—ด [],

inpa.tistory.com


๐Ÿ“Œ ๋„˜๋ฒ„ ๋ฉ”์†Œ๋“œ

Number.isFinite()

: ์œ ํ•œํ•œ ์ˆ˜?

Number.isInteger()

: ์ •์ˆ˜?

Number.isNaN()

: nan?

Number.prototype.toFixed()

: ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ง€์ •๋œ ์†Œ์ˆซ์ ์ž๋ฆฌ๋ฅผ ๋ฐ˜์˜ฌ๋ฆผ

Number.prototype.toPrecision()

: ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ง€์ •๋œ ์ „์ฒด ์ž๋ฆฟ์ˆ˜๊นŒ์ง€ ์œ ํšจํ•˜๋„๋ก ๋‚˜๋จธ์ง€ ์ž๋ฆฟ์ˆ˜๋ฅผ ๋ฐ˜์˜ฌ๋ฆผ

 

[JS] ๐Ÿ“š Number ๋ฉ”์†Œ๋“œ โœ๏ธ ์ •๋ฆฌ

Number ๋ž˜ํผ ๊ฐ์ฒด(wrapper object) var str = "๋ฌธ์ž์—ด"; // ๋ฆฌํ„ฐ๋Ÿด ๋ฌธ์ž์—ด ์ƒ์„ฑ var len = str.length; // ๋ฌธ์ž์—ด ํ”„๋กœํผํ‹ฐ์ธ length ์‚ฌ์šฉ ์œ„์˜ ์˜ˆ์ œ์—์„œ ์ƒ์„ฑํ•œ ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด str์€ ๊ฐ์ฒด๊ฐ€ ์•„๋‹Œ๋ฐ๋„ length ํ”„..

inpa.tistory.com


๐Ÿ“Œ ๋ฌธ์ž์—ด ๋ฉ”์†Œ๋“œ

String.prototype.split(separator, limit)

: ๋ฌธ์ž์—ด -> ๋ฐฐ์—ด

โ€‹

String.prototype.substring(star, end)

String.prototype.slice(start, end)

: ๋ฌธ์ž์—ด ์ผ๋ถ€ ๋ฝ‘์•„

: slice๋Š” -1 ์ธ๋ฑ์Šค ์ง€์›

โ€‹

String.prototype.indexOf(searchstring, fromIndex)

String.prototype.lastIndexOf(searchString, fromIndex)

: ํ•ด๋‹น ๋ฌธ์ž๊ฐ€ ์žˆ๋‹ค๋ฉด ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜. ๋ฌธ์ž๊ฐ’์ด ์žˆ๋Š”์ง€ ์ฐพ์„๋•Œ ์”€

: lastIndecOf๋Š” ๋งˆ์ง€๋ง‰ ๊ธฐ์ค€์„ ์กฐ์ ˆํ•ด์„œ ์›ํ•˜๋Š” ๊ตฌ๊ฐ„์—์„œ ์ธ๋ฑ์Šค ์ฐพ์Œ

โ€‹

Stringโ€‹.prototypeโ€‹.includes(searchString, position)

: indexOf ๋ถˆ๋ฆฌ์–ธ ๋ฒ„์ ผ

 

 

[JS] ๐Ÿ“š String ๋ฉ”์†Œ๋“œ โœ๏ธ ์ •๋ฆฌ

String String ๊ฐ์ฒด๋Š” ์›์‹œ ํƒ€์ž…์ธ ๋ฌธ์ž์—ด์„ ๋‹ค๋ฃฐ ๋•Œ ์œ ์šฉํ•œ ํ”„๋กœํผํ‹ฐ์™€ ๋ฉ”์†Œ๋“œ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๋ ˆํผ(wrapper) ๊ฐ์ฒด์ด๋‹ค. ๋ณ€์ˆ˜ ๋˜๋Š” ๊ฐ์ฒด ํ”„๋กœํผํ‹ฐ๊ฐ€ ๋ฌธ์ž์—ด์„ ๊ฐ’์œผ๋กœ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋ฉด String ๊ฐ์ฒด์˜ ๋ณ„๋„ ์ƒ

inpa.tistory.com


๐Ÿ“Œ ๋ฐฐ์—ด ๋ฉ”์†Œ๋“œ

Array.from

: ์œ ์‚ฌ๋ฐฐ์—ด,์ดํ„ฐ๋Ÿฌ๋ธ” ๊ฐ์ฒด -> ๋ฐฐ์—ด ๋ณ€ํ™˜

Array.of

: ์ธ์ˆ˜๋ฅผ -> ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜

โ€‹

Array.prototype.indexOf(searchElement, fromIndex)

: String์˜ indexOf๋ž‘ ๊ฐ™์Œ

: ๋ถˆ๋ฆฌ์–ธ ๋ฒ„์ ผ includes()๊ฐ€ ์žˆ์Œ

โ€‹

Array.prototype.join(separator)

: ๊ตฌ๋ถ„์ž ์ฒ˜๋ฆฌ ํ•œํ›„ ๋ฌธ์ž์—ด ๋ณ€ํ™˜

: ์‚ฌ์‹ค์ƒ String์˜ split์˜ ๋ฐ˜๋Œ€๋ฒ„์ ผ

โ€‹

Array.prototype.slice(start, end)

: ๋ฌธ์ž์—ด slice๋ž‘ ๊ฑฐ์˜ ๋น„์Šท

: ์ธ์ˆ˜๋ฅผ ์ „๋‹ฌํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฐฐ์—ด๋ณต์‚ฌ๊ฐ€ ์ผ์–ด๋‚จ. ์ด๋ฅผ ์ด์šฉํ•ด ์œ ์‚ฌ๋ฐฐ์—ด์„ ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜ ๊ฐ€๋Šฅ

const arr0 = [].slice.call(arguments); // [1, 2, 3]

const arr1 = [...arguments]; // [1, 2, 3]

const arr2 = Array.from(arguments); // [1, 2, 3]

 

Array.prototype.splice(start, deleteCount, …items)

์ด 3๊ฐ€์ง€์˜ ๊ธฐ๋Šฅ์œผ๋กœ ์‚ฌ์šฉ๋ ์ˆ˜ ์žˆ๋‹ค.

  1) ๋ฐฐ์—ด ์š”์†Œ ์ถ”๊ฐ€ (์‚ญ์ œ ์•ˆํ•˜๊ณ  ์ถ”๊ฐ€)

  2) ๋ฐฐ์—ด ์š”์†Œ ๊ต์ฒด (์‚ญ์ œํ•˜๊ณ  ์ถ”๊ฐ€)

  3) ๋ฐฐ์—ด ์š”์†Œ ์‚ญ์ œ (์ถ”๊ฐ€ ์•ˆํ•˜๊ณ  ์‚ญ์ œ)

โ€‹

Array.prototype.fill()

: ํ•จ์ˆ˜ ์ธ์ž๋ฅผ ๋ฐฐ์—ด ์ธ์ˆ˜๋กœ

const arr = new Array(5).fill(); // [undefined, undefined, undefined, undefined, undefined]
                                 // fill()์„ ์•ˆ๋ถ™์ผ๊ฒฝ์šฐ -> [empty x 5]

const arr = new Array(5).fill(5); // [5, 5, 5, 5, 5]

 

Array.prototype.at()

: ์ œ์ด์ฟผ๋ฆฌ eq()๊ฐ™์€ ๊ฐœ๋…. [-1]๋ฅผ at(-1) ๋กœ ์“ธ์ˆ˜ ์žˆ๋‹ค.

 

 

[JS] ๐Ÿ“š Array ๋ฉ”์†Œ๋“œ โœ๏ธ ์ •๋ฆฌ

Array ๋ฐฐ์—ด ๋ฆฌํ„ฐ๋Ÿด const arr = [ 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine' ]; โ€‹ ๋ฐฐ์—ด ์ƒ์„ฑ์ž const arr = new Array(1, 2, 3); const arr2 = new Array(20); // ์ธ์ˆ˜..

inpa.tistory.com


๐Ÿ“Œ ๋‚ ์งœ ๋ฉ”์†Œ๋“œ

new.Date()

: ๊ฒฐ๊ณผ๊ฐ’์ด Date๊ฐ์ฒด๋กœ ๋ฐ˜ํ™˜. ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ.

Date()

: new์—ฐ์‚ฐ์ž ์—†์ด ํ˜ธ์ถœ. ๊ฒฐ๊ณผ๊ฐ’์ด ๋ฌธ์ž์—ด๋กœ ๋ฐ˜ํ™˜

 

โ€‹๋ช‡์ผ ์ „, ๋ช‡์ผ ํ›„ ๋‚ ์งœ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐฉ๋ฒ•

var now = new Date();	// ํ˜„์žฌ ๋‚ ์งœ ๋ฐ ์‹œ๊ฐ„
console.log("ํ˜„์žฌ : ", now);

var yesterday = new Date(now.setDate(now.getDate() - 1));	// ์–ด์ œ
console.log("์–ด์ œ : ", yesterday);

var tomorrow = new Date(now.setDate(now.getDate() + 1));	// ๋‚ด์ผ
console.log("๋‚ด์ผ : ", tomorrow);
 

[JS] ๐Ÿ“š Date ๋ฉ”์†Œ๋“œ โœ๏ธ ์ •๋ฆฌ

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ์˜ ๋‚ ์งœ ํ‘œํ˜„ โ€‹์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” Date ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋งค ์ˆœ๊ฐ„ ๋ณ€ํ™”ํ•˜๋Š” ์‹œ๊ฐ„๊ณผ ๋‚ ์งœ์— ๊ด€ํ•œ ์ •๋ณด๋ฅผ ์†์‰ฝ๊ฒŒ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค. Date ๊ฐ์ฒด๋Š” ์—ฐ์›”์ผ, ์‹œ๋ถ„์ดˆ์˜ ์ •๋ณด์™€ ํ•จ๊ป˜ ๋ฐ€๋ฆฌ์ดˆ

inpa.tistory.com


๐Ÿ“Œ ๊ฐ์ฒด ๋ฉ”์†Œ๋“œ

Object.create()
// ์ฃผ์–ด์ง„ ํ”„๋กœํ† ํƒ€์ž…(prototype)์˜ ๊ฐ์ฒด์™€ ์†์„ฑ๋“ค์„ ๊ฐ–๊ณ  ์žˆ๋Š” ์ƒˆ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

Object.assign()
// ํ•˜๋‚˜ ์ด์ƒ์˜ ์›๋ณธ ๊ฐ์ฒด๋“ค๋กœ๋ถ€ํ„ฐ ๋ชจ๋“  ์—ด๊ฑฐ๊ฐ€๋Šฅํ•œ ์†์„ฑ๋“ค์„ ๋Œ€์ƒ ๊ฐ์ฒด๋กœ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.
// ๊ทธ๋ƒฅ ๊ฐ์ฒด = ๊ฐ์ฒด ํ•˜๋ฉด ์ฃผ์†Œ๊ฐ’์ด ๊ณต์œ ๋  ๋ฟ์ด๋‹ค.

Object.keys()
// ๊ฐ์ฒด์˜ ํ‚ค๋งŒ ๋‹ด์€ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. (๋‹จ, ์—ด๊ฑฐ๊ฐ€๋Šฅํ•œ ๊ฒƒ๋งŒ)

Object.values()
// ๊ฐ์ฒด์˜ ๊ฐ’๋งŒ ๋‹ด์€ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. (๋‹จ, ์—ด๊ฑฐ๊ฐ€๋Šฅํ•œ ๊ฒƒ๋งŒ)

Object.getOwnPropertyNames()
// ํ•ด๋‹น ๊ฐ์ฒด๊ฐ€ ๊ฐ€์ง„ ๋ชจ๋“  ๊ณ ์œ  ํ”„๋กœํผํ‹ฐ์˜ ์ด๋ฆ„์„ ๋ฐฐ์—ด์— ๋‹ด์•„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

Object.entries()
// [ํ‚ค, ๊ฐ’] ์Œ์„ ๋‹ด์€ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
// ๋ณดํ†ต ๊ฐ์ฒด๋ฅผ ์ด์ฐจ์› ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  Map์ž๋ฃŒํ˜•์œผ๋กœ ๋งŒ๋“ค๋•Œ ์‚ฌ์šฉ

Object.fromEntries()
// [ํ‚ค, ๊ฐ’] ํ˜•ํƒœ์˜ ๋ฐฐ์—ด์„ ๊ฐ์ฒด๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

child instanceof Object; // child๊ฐ€ ๊ฐ์ฒด์ธ์ง€ ํ™•์ธ true/false
typeof [] // []์˜ ํƒ€์ž…์ด ๋ญ”์ง€ ๋ฐ˜ํ™˜ -> object
 

[JS] ๐Ÿ“š Object ๋ฉ”์†Œ๋“œ โœ๏ธ ์ •๋ฆฌ

๊ฐ์ฒด ๋ฉ”์†Œ๋“œ(method) โ€‹๋ชจ๋“  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด๋Š” Object ๊ฐ์ฒด์™€ Object.prototype ๊ฐ์ฒด์˜ ๋ชจ๋“  ํ”„๋กœํผํ‹ฐ์™€ ๋ฉ”์†Œ๋“œ๋ฅผ ์ƒ์†๋ฐ›์Šต๋‹ˆ๋‹ค. โ€‹ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ๋Œ€ํ‘œ์ ์ธ ๊ฐ์ฒด ๋ฉ”์†Œ๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. Object.crea

inpa.tistory.com


๐Ÿ“Œ setTimeout()

// ์ค‘์ฒฉ ์Šค์ผ€์ฅด๋ง
let timerId = setTimeout(function tick() {
  timerId = setTimeout(tick, 2000); // (*)
}, 2000);
let first = 10
let second = 20
let result = 0

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

setTimeout(function() {
  result = add(first, second)
  console.log(result) // ์ •๋‹ต์€? 30(x) 40(o)
}, 1000)

first = 20

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๊ฐ๊ฐ์˜ task๋ฅผ ํ์— ์ ์žฌํ•ด๋‘๊ณ  ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค.

์ด ๋•Œ ์–ด๋–ค ์ฝ”๋“œ๊ฐ€ ์ƒˆ๋กœ์šด ํƒœ์Šคํฌ๋กœ ์ ์žฌ๋˜์ง€์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ๋ถ€์กฑํ•˜๋ฉด ์œ„์™€ ๊ฐ™์€ ์‹ค์ˆ˜๋ฅผ ์ €์ง€๋ฅผ ์ˆ˜ ์žˆ๋‹ค.

์ตœ์ดˆ์˜ task ๋Š” ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ ์ž์ฒด์ด๋‹ค.

์ด ์ฒซ๋ฒˆ์งธ task ๋‚ด์— setTimeout์€ ๋ณ„๋„์˜ task๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ฒซ๋ฒˆ์งธ task ๊ฐ€ ์ข…๋ฃŒ๋˜๊ธธ ๊ธฐ๋‹ค๋ฆฐ๋‹ค.

์ฒซ๋ฒˆ์งธ task ์ธ ์Šคํฌ๋ฆฝํŠธ์˜ ์‹คํ–‰์ด ๋๋‚˜๋ฉด ๋น„๋กœ์†Œ setTimeout ์˜ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•  ์ค€๋น„๋ฅผ ํ•œ๋‹ค.

 

[JS] ๐Ÿ“š ์Šค์ผ€์ฅด๋ง setTimeout / setInterval

์Šค์ผ€์ฅด๋ง ์ผ์ • ์‹œ๊ฐ„์ด ์ง€๋‚œ ํ›„์— ์›ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์˜ˆ์•ฝ ์‹คํ–‰(ํ˜ธ์ถœ)ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๊ฒƒ์„ 'ํ˜ธ์ถœ ์Šค์ผ€์ค„๋ง(scheduling a call)'์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ํ˜ธ์ถœ ์Šค์ผ€์ค„๋ง์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‘ ๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. setTime

inpa.tistory.com


๐Ÿ“Œ Promise

  • ๋น„๋™๊ธฐ๊ฐ€ ์–ธ์ œ ์–ด๋””์„œ ์‹คํ–‰๋ ์ง€ ๋ชจ๋ฅด๋‹ˆ๊นŒ ์ผ์ข…์˜ ์•ฝ์†์„ ํ•˜๊ณ  ๋‹ค์Œ ํ•จ์ˆ˜ ์‹คํ–‰(then)์„ ๋ณด์žฅํ•˜๋Š” ๊ธฐ๋ฒ•.
  • ์ด๋ฅผ ํ†ตํ•ด ๋™๊ธฐ์‹์œผ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ํ•จ์ˆ˜ ์ฝœ๋ฐฑ์ง€์˜ฅ์„ ํ•ด๊ฒฐํ–ˆ๋”๋‹ˆ then์ฝœ๋ฐฑ์ง€์˜ฅ์ด ์ƒ๊ฒจ๋‚ ์ˆ˜์žˆ์–ด์„œ async/await์„ ์“ฐ๋Š” ์ถ”์„ธ์ด๋‹ค.
function p() {
	return new Promise((resolve, reject) => {
		setTimeout(() => {
			reject(new Error('error');
		}, 1000);
	});
}

//์›ํ•˜๋Š” ์‹œ์ ์— ํ”„๋กœ๋ฏธ์Šค ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์ฝœ๋ฐฑํ•จ์ˆ˜๋„ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.
p()
	.then(() => {
		console.log('1000msํ›„์— fulfilled ๋ฉ๋‹ˆ๋‹ค.');
	})
	.catch(reason => {
		console.log('1000msํ›„์— rejected ๋ฉ๋‹ˆ๋‹ค.', reason);
});
 

[JS] ๐Ÿ“š ๋น„๋™๊ธฐ์ฒ˜๋ฆฌ - Promise

๊ธฐ์กด ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ (์ฝœ๋ฐฑ ์ง€์˜ฅ) ์ˆซ์ž n ์„ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฐ›์•„์™€์„œ ๋‹ค์„ฏ๋ฒˆ์— ๊ฑธ์ณ 1์ดˆ๋งˆ๋‹ค 1์”ฉ ๋”ํ•ด์„œ ์ถœ๋ ฅํ•˜๋Š” ์ž‘์—…์„ setTimeout ์œผ๋กœ ๊ตฌํ˜„ํ•œ ์ฝ”๋“œ์ด๋‹ค. ํ•œ๋ˆˆ์— ๋ด๋„ ์ฝœ๋ฐฑํ•จ์ˆ˜๋ฅผ ์—ฐ๋‹ฌ์•„ ์จ์„œ ์ฝ”๋“œ์˜ ๊นŠ

inpa.tistory.com


๐Ÿ“Œ async / await

  • async/await๊ฐ€ Promise๋ฅผ ์™„๋ฒฝํžˆ ๋Œ€์ฒดํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค.
  • ๊ฐ„๋‹จํ•˜๊ฒŒ ๋งํ•˜๋ฉด, .then์˜ ์ฝœ๋ฐฑ์ง€์˜ฅ์„ ๊ต์ฒดํ•˜๊ธฐ ์œ„ํ•ด await์„ ์‚ฌ์šฉํ•˜๋Š”๊ฒƒ์ด๋‹ค. async๋Š” await์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์ฒ˜๋ฆฌ.
  • asyncํ•จ์ˆ˜๋Š” Promise๊ฐ์ฒด๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค. ๋”ฐ๋ผ์„œ asyncํ•จ์ˆ˜ ๋‚ด์—์„œ await๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ ๊ทธ ๊ฒฐ๊ณผ๋กœ then์œผ๋กœ ๋ฐ›์•„์˜ฌ์ˆ˜ ์žˆ๋‹ค.
async function p2(){ // async์„ ์ง€์ •ํ•ด์ฃผ๋ฉด Promise๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜๋กœ ๋งŒ๋“ค์–ด์ค€๋‹ค.
  return 'hello2'; //๋ฆฌํ„ด๊ฐ’์€ Promise{<resolved>: "hello2"} ์ž๋™ resolveํ•ด์ค€๋‹ค๋Š”๊ฑธ ์•Œ ์ˆ˜์žˆ๋‹ค.
  // reject๋Š” throw ์—๋Ÿฌ๋ฅผ ๋‚ ๋ฆฌ๋ฉด ๋œ๋‹ค.
}

p2().then((n) => console.log(n));
  • ์ „ํ˜€ ์—ฐ๊ด€์—†๋Š” ๋น„๋™๊ธฐํ•จ์ˆ˜๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ๋ฐ›์•„์˜ฌ๊ฒฝ์šฐ, ์ˆœ์„œ๋ฅผ ์ง€ํ‚ฌํ•„์š”๊ฐ€ ์—†๊ธฐ๋•Œ๋ฌธ์— ์„ฑ๋Šฅ์„ ์œ„ํ•ด ๋ฒ™๋ ฌ ์ฒ˜๋ฆฌ ํ•ด์ค€๋‹ค.
let a = await getApple(); // 1์ดˆ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ๋ฆฌํ„ด๊ฐ’์„ ์–ป๋Š”๋‹ค.
let b = await getBanana(); // 1์ดˆ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ๋ฆฌํ„ด๊ฐ’์„ ์–ป๋Š”๋‹ค.
// ์ด 2์ดˆ ๊ธฐ๋‹ค๋ ค์•ผํ•จ

// -------------------------------------------------------------------------

let getApplePromise = getApple(); // 1์ดˆ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰์‹œํ‚ค๊ณ  ๋ฆฌํ„ด๊ฐ’์„ ๋ณ€์ˆ˜์— ๋„ฃ๋Š”๋‹ค.
let getBananaPromise = getBanana(); // 1์ดˆ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰์‹œํ‚ค๊ณ  ๋ฆฌํ„ด๊ฐ’์„ ๋ณ€์ˆ˜์— ๋„ฃ๋Š”๋‹ค.

let a = await getApplePromise;
let b = await getBananaPromise; 
// ๋ณธ๋ž˜๋ผ๋ฉด 1์ดˆ+1์ดˆ ๋ฅผ ๊ธฐ๋‹ค๋ ค์•ผ ํ•˜๋Š”๋ฐ, ์œ„์—์„œ 1์ดˆ๊ธฐ๋‹ค๋ฆฌ๋Š” ํ•จ์ˆ˜๋ฅผ ํ•œ๋ฒˆ์— ๋ถˆ๋Ÿฌ์™”๊ธฐ ๋•Œ๋ฌธ์—, ๋Œ€์ถฉ 1.001์ดˆ๋งŒ ๊ธฐ๋‹ค๋ฆฌ๋ฉด ๋™๊ธฐ์‹์œผ๋กœ ์ฒ˜๋ฆฌ๋œ๋‹ค.
 

[JS] ๐Ÿ“š ๋น„๋™๊ธฐ์ฒ˜๋ฆฌ - async / await

๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ๋ฐฉ์‹ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์–ธ์–ด๊ธฐ ๋•Œ๋ฌธ์— ๋น„๋™๊ธฐ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์ˆ˜์ ์ด๋‹ค. ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋Š” ๊ทธ ๊ฒฐ๊ณผ๊ฐ€ ์–ธ์ œ ๋ฐ˜ํ™˜๋ ์ง€ ์•Œ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋™๊ธฐ์‹์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ธฐ๋ฒ•๋“ค์ด

inpa.tistory.com


๐Ÿ“Œ ํด๋กœ์ €

โ€‹ํ•จ์ˆ˜๋กœ์„œ์˜ ํด๋กœ์ € 

- ์ง€์—ญ๋ณ€์ˆ˜๋กœ์„œ ์€๋‹‰

var increase = (function() {
  var counter = 0;
      
  return function(){ // ํด๋กœ์ €
    return ++counter; 
  }
})();


var increase = (function(counter) { // ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ์ง€์—ญ๋ณ€์ˆ˜๋กœ
  return function(){ // ํด๋กœ์ €
    return ++counter; 
  }
})(0);


increase(); // 1

โ€‹

ํด๋ž˜์Šค ๋กœ์„œ์˜ ํด๋กœ์ € 

- ํด๋ž˜์Šค์˜ private ๋ณ€์ˆ˜๋กœ์„œ ์€๋‹‰

function Counter() {
  // ์นด์šดํŠธ๋ฅผ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ์ž์œ  ๋ณ€์ˆ˜
  // this.counter๋กœ ์•ˆํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— new ์ƒ์„ฑ์ž๋กœ ์ดˆ๊ธฐํ™”ํ•ด๋„ ์ด ๋ณ€์ˆ˜๋Š” ๊ฐ์ฒด์— ๋‹ด๊ธฐ์ง€ ์•Š๋Š”๋‹ค.
  var counter = 0;

  // ํด๋กœ์ €
  this.increase = function () {
    return ++counter;
  };

  // ํด๋กœ์ €
  this.decrease = function () {
    return --counter;
  };
}

const counter = new Counter(); // counter๊ฐ์ฒด๋Š” increase decreaseํ•จ์ˆ˜ ๋‘๊ฐœ๋งŒ ๊ฐ–๊ฒŒ ๋œ๋‹ค.

console.log(counter.increase()); // 1
console.log(counter.decrease()); // 0
 

[JS] ๐Ÿ“š ํด๋กœ์ € (Closure)

ํด๋กœ์ €(closure) - ํด๋กœ์ €๋Š” ๋ฐ˜ํ™˜๋œ ๋‚ด๋ถ€ํ•จ์ˆ˜๊ฐ€ ์ž์‹ ์ด ์„ ์–ธ๋์„ ๋•Œ์˜ ํ™˜๊ฒฝ(Lexical environment)์ธ ์Šค์ฝ”ํ”„๋ฅผ ๊ธฐ์–ตํ•˜์—ฌ ์ž์‹ ์ด ์„ ์–ธ๋์„ ๋•Œ์˜ ํ™˜๊ฒฝ(์Šค์ฝ”ํ”„) ๋ฐ–์—์„œ ํ˜ธ์ถœ๋˜์–ด๋„ ๊ทธ ํ™˜๊ฒฝ(์Šค์ฝ”ํ”„)์— ์ ‘๊ทผํ• 

inpa.tistory.com


๐Ÿ“Œ ๋ฐฐ์—ด ๊ณ ์ฐจ ํ•จ์ˆ˜ ์ด ์ •๋ฆฌ

  • .forEach() : ์ฃผ์–ด์ง„ ๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๋ฉด์„œ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰
  • .map() : ์ฝœ๋ฐฑํ•จ์ˆ˜์—์„œ์˜ ์‹คํ–‰๊ฒฐ๊ณผ๋ฅผ ๋ฆฌํ„ดํ•œ ๊ฐ’์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด ๋ฐ˜ํ™˜
  • .find() : indexOf() ๊ฐ€ ์ฐพ๊ณ ์ž ํ•˜๋Š” ๊ฐ’์„ ์ธ๋ฑ์Šค๋กœ ์ฃผ๋Š”๊ฑฐ๊ณ , include()๊ฐ€ ์ฐพ๊ณ ์ž ํ•˜๋Š” ๊ฐ’์„ Bool๋กœ ์ฃผ๋Š”๊ฑฐ๋ฉด, find()๋Š” ์ฐพ๊ณ ์ž ํ•˜๋Š” ๊ฐ’์„ ๊ทธ๋Œ€๋กœ ์ค€๋‹ค.
  • .findindex() indexOf() ์˜ ์ฝœ๋ฐฑํ•จ์ˆ˜ ๋ฒ„์ ผ / find()์˜ ๋ฆฌํ„ด๊ฐ’์ด ์ธ๋ฑ์Šค์ธ ๋ฒ„์ ผ.
  • .filter() : find()์˜ ์ฐพ์•„์„œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ธฐ๋Šฅ๊ณผ map()์˜ ๋ฐฐ์—ด์ƒ์„ฑ ๊ธฐ๋Šฅ์˜ ์œตํ•ฉ ๋ฒ„์ ผ.
  • .reduce() : acc์„œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ๋ฐฐ์—ด๊ฐ’cur์„ ์ˆœํšŒํ•˜๋ฉฐ acc+=cur์„ ์‹คํ–‰.
 

[JS] ๐Ÿ“š ๋ฐฐ์—ด ๊ณ ์ฐจํ•จ์ˆ˜ ์ด์ •๋ฆฌ ๐Ÿ’ฏ : (map,filter,find,reduce,sort,some,every)

๊ณ ์ฐจ ํ•จ์ˆ˜๋Š” ํ•จ์ˆ˜๋ฅผ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ „๋‹ฌ๋ฐ›๊ฑฐ๋‚˜ ์—ฐ์‚ฐ์˜ ๊ฒฐ๊ณผ๋กœ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋Š” ๋ฉ”์„œ๋“œ forEach for๋ฌธ์„ ๋Œ€์ฒดํ•˜๋Š” ๊ณ ์ฐจ ํ•จ์ˆ˜. ๋ฐ˜๋ณต๋ฌธ์„ ์ถ”์ƒํ™”ํ•˜์—ฌ ๊ตฌํ˜„๋œ ๋ฉ”์„œ๋“œ์ด๊ณ  ๋‚ด๋ถ€์—์„œ ์ฃผ์–ด์ง„ ๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๋ฉด์„œ

inpa.tistory.com


๐Ÿ“Œ defer / async ์ง€์—ฐ ๋กœ๋“œ

JavaScript
JavaScript

 

[JS] ๐Ÿ“š defer, async ์Šคํฌ๋ฆฝํŠธ

๋ชจ๋˜ ์›น๋ธŒ๋ผ์šฐ์ €์—์„œ ๋Œ์•„๊ฐ€๋Š” ์Šคํฌ๋ฆฝํŠธ๋“ค์€ ๋Œ€๋ถ€๋ถ„ HTML๋ณด๋‹ค ‘๋ฌด๊ฒ์Šต๋‹ˆ๋‹ค’. ์šฉ๋Ÿ‰์ด ์ปค์„œ ๋‹ค์šด๋กœ๋“œ๋ฐ›๋Š” ๋ฐ ์˜ค๋žœ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๊ณ  ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ ์—ญ์‹œ ๋งˆ์ฐฌ๊ฐ€์ง€์ด์ฃ . ๋ธŒ๋ผ์šฐ์ €๋Š” HTML์„ ์ฝ๋‹ค๊ฐ€ ํƒœ๊ทธ

inpa.tistory.com


๐Ÿ“Œ Map ์ž๋ฃŒํ˜•

let map1 = new Map([ ['a',1], ['a1',2], ['b',3] ]) 
// map ์ž๋ฃŒํ˜• : {"a" => 1, "a1" => 2, "b" => 3} 

// ์ฒด์ด๋‹ ๊ฐ€๋Šฅ
map
.set('1', 'str1') 
.set(1, 'num1') 
.set(true, 'bool1');

๊ฐ์ฒด -> ๋งต

1) Object.entries()๋กœ ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜

2) ๋ณ€ํ™˜๋œ ๊ฐ’์œผ๋กœ new Map()

 

๋งต -> ๊ฐ์ฒด

1) map.entries()๋กœ ๋งต์šฉ ์ดํ„ฐ๋ ˆ์ดํ„ฐ ๋ฐ˜ํ™˜

2) Object.fromEntries()์œผ๋กœ ์ดํ„ฐ๋ ˆ์ดํ„ฐ๋ฅผ ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜

 

[JS] ๐Ÿ“š ์ž๋ฃŒํ˜• Map ๐Ÿšฉ ์ •๋ฆฌ

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๊ฐ์ฒด์™€ ๋ฐฐ์—ด์ด๋ผ๋Š” ๊ฐ•๋ ฅํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. โ€‹๊ฐ์ฒด – ํ‚ค๊ฐ€ ์žˆ๋Š” ์ปฌ๋ ‰์…˜์„ ์ €์žฅํ•จ ๋ฐฐ์—ด – ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ์ปฌ๋ ‰์…˜์„ ์ €์žฅํ•จ โ€‹ํ•˜์ง€๋งŒ ํ˜„์‹ค ์„ธ๊ณ„๋ฅผ ๋ฐ˜์˜ํ•˜๊ธฐ์—” ์ด ๋‘ ์ž๋ฃŒ๊ตฌ

inpa.tistory.com


๐Ÿ“Œ Set ์ž๋ฃŒํ˜•

์…‹(Set)์€ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฐ’์„ ๋ชจ์•„๋†“์€ ํŠน๋ณ„ํ•œ ์ปฌ๋ ‰์…˜

let sett = new Set(["bananas", "oranges", "bananas", "apples", "bananas"]); 
// Set(3) {'bananas', 'oranges', 'apples'}
 

[JS] ๐Ÿ“š ์ž๋ฃŒํ˜• Set ๐Ÿšฉ ์ •๋ฆฌ

์…‹(Set) ์…‹(Set)์€ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ๊ฐ’์„ ๋ชจ์•„๋†“์€ ํŠน๋ณ„ํ•œ ์ปฌ๋ ‰์…˜์ž…๋‹ˆ๋‹ค. ์…‹์— ํ‚ค๊ฐ€ ์—†๋Š” ๊ฐ’์ด ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. let sett = new Set(["bananas", "oranges", "bananas", "apples", "bananas"]); // Set(3) {'ba..

inpa.tistory.com


๐Ÿ“Œ Symbol ์ž๋ฃŒํ˜•

  • Symbol() - ์ผ๋ฐ˜ ์‹ฌ๋ณผ
  • Symbol.for() - ์ „์—ญ ์‹ฌ๋ณผ
  • Symbol.keyFor() - Symbol.for() ์ด๋ฆ„ํ‘œ ๋ฐ˜ํ™˜
  • Symbol.description - Symbol() ์ด๋ฆ„ํ‘œ ๋ฐ˜ํ™˜.
  • Symbol.iterator - ์–ด๋–ค ๊ฐ์ฒด๊ฐ€ Symbol.iterator๋ฅผ ํ”„๋กœํผํ‹ฐ key๋กœ ์‚ฌ์šฉํ•œ ๋ฉ”์†Œ๋“œ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉด ์ดํ„ฐ๋ ˆ์ดํ„ฐ๋กœ ๋™์ž‘ํ•˜๋„๋ก
 

[JS] ๐Ÿ“š ์ž๋ฃŒํ˜• Symbol ๐Ÿšฉ ์ •๋ฆฌ

Symbol์ด๋ž€? 1997๋…„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ECMAScript๋กœ ์ฒ˜์Œ ํ‘œ์ค€ํ™”๋œ ์ด๋ž˜๋กœ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” 6๊ฐœ์˜ ํƒ€์ž…์„ ๊ฐ€์ง€๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. [์›์‹œ ํƒ€์ž… (primitive data type)] Boolean null undefined Number String โ€‹ [๊ฐ์ฒด ํƒ€..

inpa.tistory.com


๐Ÿ“Œ ํ”„๋กœํ† ํƒ€์ž…

/* 1๋‹จ๊ณ„ : ํ”„๋กœํ† ํƒ€์ž… ๊ฐ์ฒด ์ •์˜ */ 
var proto = { 
	sentence : 4, 
	probation : 2 
}; 

/* 2๋‹จ๊ณ„ : ๊ฐ์ฒด ์ƒ์„ฑ์ž ์ •์˜ */ 
var Prisoner = function(name, id) { 
	this.name = name; 
	this.id = id; 
} 

/* 3๋‹จ๊ณ„ : ์ƒ์„ฑ์ž์™€ ํ”„๋กœํ† ํƒ€์ž… ๊ฐ์ฒด ์—ฐ๊ฒฐ */ 
Prisoner.prototype = proto; 

/* 4๋‹จ๊ณ„ : ๊ฐ์ฒด ์ƒ์„ฑ */ 
var firstPrisoner = new Prisoner("Joe", "12A"); 
var secondPrisoner = new Prisoner("Joe2", "12A2");

 

Prototype Object

  • ํ•จ์ˆ˜์— ์ž์ฒด์ ์œผ๋กœ ๋‚ด์žฅ๋˜์–ด์žˆ๋Š” ์›์‹œ ๊ฐ์ฒด. ํด๋ž˜์Šค ์—ญํ• ํ•˜๋Š” ์ƒ์ž
  • Prototype Object๋Š” ์ผ๋ฐ˜์ ์ธ ๊ฐ์ฒด์™€ ๊ฐ™์œผ๋ฉฐ ๊ธฐ๋ณธ์ ์ธ ์†์„ฑ์œผ๋กœ constructor์™€ __proto__๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

JavaScript
JavaScript

constructor ์ƒ์„ฑ์ž๋Š” Prototype Object์™€ ๊ฐ™์ด ์ƒ์„ฑ๋˜์—ˆ๋˜ ํ•จ์ˆ˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. (์ƒ์„ฑ์ž๋‹ˆ๊นŒ)
__proto__๋Š” Prototype Link์ž…๋‹ˆ๋‹ค. ๋ฐ‘์—์„œ ์ž์„ธํžˆ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

 

Prototype Link

  • __proto__
  • โ€‹__proto__์†์„ฑ์€ ๋ชจ๋“  ๊ฐ์ฒด๊ฐ€ ๋น ์ง์—†์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์†์„ฑ
  • __proto__๋Š” ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ ์กฐ์ƒ์ด์—ˆ๋˜ ํ•จ์ˆ˜์˜ Prototype Object๋ฅผ ๊ฐ€๋ฆฌํ‚ต๋‹ˆ๋‹ค.
  • ์ด๋ ‡๊ฒŒ __proto__์†์„ฑ์„ ํ†ตํ•ด ์ƒ์œ„ ํ”„๋กœํ† ํƒ€์ž…๊ณผ ์—ฐ๊ฒฐ๋˜์–ด์žˆ๋Š” ํ˜•ํƒœ๋ฅผ ํ”„๋กœํ† ํƒ€์ž… ์ฒด์ธ(Chain)

JavaScript
JavaScript

 

[JS] ๐Ÿ“š Prototype ์™„์ „ ์ •๋ณต โ—

ํ”„๋กœํ† ํƒ€์ž… ๊ธฐ๋ฐ˜ ์–ธ์–ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ํ”„๋กœํ† ํƒ€์ž… ๊ธฐ๋ฐ˜ ์–ธ์–ด๋ผ๊ณ  ๋ถˆ๋ฆฝ๋‹ˆ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐœ๋ฐœ์„ ํ•˜๋ฉด ๋น ์งˆ ์ˆ˜ ์—†๋Š” ๊ฒƒ์ด ํ”„๋กœํ† ํƒ€์ž…์ธ๋ฐ์š”. ํ”„๋กœํ† ํƒ€์ž…์ด ๊ฑฐ์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ทธ ์ž์ฒด์ด๊ธฐ๋•Œ๋ฌธ

inpa.tistory.com


๐Ÿ“Œ ํด๋ž˜์Šค ๋ฌธ๋ฒ•

class Person {
   
   // ์ƒ์„ฑ์ž
   constructor({name, age}) { 
     this.name = name;
     this.age = age;
   }
   
   introduce() {
     return `์•ˆ๋…•ํ•˜์„ธ์š”, ์ œ ์ด๋ฆ„์€ ${this.name}์ž…๋‹ˆ๋‹ค.`;
   }
}

const person = new Person({name: '์œค์•„์ค€', age: 19});
console.log(person.introduce()); // ์•ˆ๋…•ํ•˜์„ธ์š”, ์ œ ์ด๋ฆ„์€ ์œค์•„์ค€์ž…๋‹ˆ๋‹ค.
  • ํด๋ž˜์Šค ๋ฉ”์†Œ๋“œ์— computed property์ฒ˜๋Ÿผ ๋ณ€์ˆ˜๋กœ ๋ช…๋ช… ๊ฐ€๋Šฅ
  • getter, setter ์‚ฌ์šฉ๊ฐ€๋Šฅ
  • ์ œ๋„ˆ๋ ˆ์ดํ„ฐ ์‚ฌ์šฉ ๊ฐ€๋Šฅ. ๋ฉ”์†Œ๋“œ์˜†์— * ๋ถ™์—ฌ์ฃผ๋ฉด ๋จ
  • static ๋ถ™์ด๋ฉด ์ •์ ๋ฉ”์†Œ๋“œ ์‚ฌ์šฉ
class Parent {

  // ์Šคํƒœํ‹ฑ
  static staticProp = 'staticProp';
  static staticMethod() {
    return 'I\'m a static method.';
  }
  
  // ์ผ๋ฐ˜
  instanceProp = 'instanceProp';
  instanceMethod() {
    return 'I\'m a instance method.';
  }
  
  constructor(name, first, second){
    this.name=name;
    this.first=first;
    this.second=second;
  }	

  sum(){
  	return (this.first + this.second);
  }
}

class Child extends Parent {
    constructor(name, first, second, third){
        super(name, first, second); //๋ถ€๋ชจ ์ƒ์„ฑ์ž๋ฅผ ๊ฐ€์ ธ์™€์„œ ํ–‰ํ•˜๊ฒŒ ํ•œ๋‹ค.
        this.third = third;
    }
    
    // ์˜ค๋ฒ„๋กœ๋”ฉ
    sum(){
        return super.sum() + this.third; // super๋กœ ๋ถ€๋ชจ๋ฉ”์†Œ๋“œ๋ฅผ ๋ณต๋ถ™
    }
}

// ์ƒ์†ํ•˜๋ฉด ๋ถ€๋ชจ์˜ static์š”์†Œ๋“ค์„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
console.log(Child.staticProp); // staticProp
console.log(Child.staticMethod()); // I'm a static method.

// ์ƒ์†ํ•˜๋ฉด ๋ถ€๋ชจ์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
const c = new Child();
console.log(c.instanceProp); // instanceProp
console.log(c.instanceMethod()); // I'm a instance method.

// ๋ถ€๋ชจ ์˜ค๋ฒ„๋กœ๋”ฉ ๋ฉ”์†Œ๋“œ ์‚ฌ์šฉ
const kim = new Child('kim', 10, 20, 30);
console.log(kim.sum()); // (10 + 20) + 30 = 60
 

[JS] ๐Ÿ“š ํด๋ž˜์Šค ๋ฌธ๋ฒ•

ํ”„๋กœํ† ํƒ€์ž… // ์ƒ์„ฑ์ž function Person({name, age}) { this.name = name; this.age = age; } Person.prototype.introduce = function() { return `์•ˆ๋…•ํ•˜์„ธ์š”, ์ œ ์ด๋ฆ„์€ ${this.name}์ž…๋‹ˆ๋‹ค.`; }; const person..

inpa.tistory.com


๐Ÿ“Œ ์ดํ„ฐ๋Ÿฌ๋ธ” & ์ดํ„ฐ๋ ˆ์ดํ„ฐ

  • ์ดํ„ฐ๋ ˆ์ดํ„ฐ๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” [Symbol.iterator]() ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ€์ง„ ๊ฐ์ฒด.
  • ์ผ๋ฐ˜ ๊ฐ์ฒด๋ฅผ ์ดํ„ฐ๋Ÿฌ๋ธ”๋กœ ๋“ฑ๋กํ•˜๋ฉด for..of๋ฌธ์œผ๋กœ ์ˆœํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋ฐฐ์—ด๋„ ๋ฌธ์ž์—ด, Map,Set๋„ ์ดํ„ฐ๋Ÿฌ๋ธ” ๊ฐ์ฒด.
  • Array.from() ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์œ ์‚ฌ๋ฐฐ์—ด์ด๋‚˜ ์ดํ„ฐ๋Ÿฌ๋ธ” ๊ฐ์ฒด๋ฅผ ์ง„์งœ๋ฐฐ๊ธฐ ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜ ๊ฐ€๋Šฅํ•˜๋‹ค.

JavaScript

 

[JS] ๐Ÿ“š ์ดํ„ฐ๋Ÿฌ๋ธ” & ์ดํ„ฐ๋ ˆ์ดํ„ฐ - ๐Ÿ’ฏ์™„๋ฒฝ ์ดํ•ด

์ดํ„ฐ๋Ÿฌ๋ธ”(interable) ์ดํ„ฐ๋Ÿฌ๋ธ”(interable)์ด๋ž€ ์ž๋ฃŒ๋ฅผ ๋ฐ˜๋ณตํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ๋งํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ํ”ํžˆ ์“ฐ๋Š” ๋ฐฐ์—ด ์—ญ์‹œ ์ดํ„ฐ๋Ÿฌ๋ธ” ๊ฐ์ฒด์ด๋‹ค. ๊ทธ๋Ÿผ ๋งŒ์ผ ์ด ๋ฐฐ์—ด์—๊ฒŒ ์ดํ„ฐ๋Ÿฌ๋ธ” ํ‘œ์‹์„ ์—†์• ๋ฒ„๋ฆฌ๋ฉด ์–ด

inpa.tistory.com

 

โ€‹

๐Ÿ“Œ ์ œ๋„ˆ๋ ˆ์ดํ„ฐ

์ œ๋„ˆ๋ ˆ์ดํ„ฐ๋ž€ ์ดํ„ฐ๋Ÿฌ๋ธ”์ด๋ฉฐ ๋™์‹œ์— ์ดํ„ฐ๋ ˆ์ดํ„ฐ = ์ดํ„ฐ๋ ˆ์ดํ„ฐ๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜

async๊ฐ€ Promise๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜๋“ฏ์ด, ์ œ๋„ˆ๋ ˆ์ดํ„ฐ๋Š” ์ดํ„ฐ๋ ˆ์ดํ„ฐ๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜๋‹ค.

 

[JS] ๐Ÿ“š ์ œ๋„ˆ๋ ˆ์ดํ„ฐ - ์ดํ„ฐ๋ ˆ์ดํ„ฐ ๊ฐ•ํ™”ํŒ

์ œ๋„ค๋ ˆ์ดํ„ฐ๋ž€? ์ดํ„ฐ๋Ÿฌ๋ธ”์ด๋ฉฐ ๋™์‹œ์— ์ดํ„ฐ๋ ˆ์ดํ„ฐ = ์ดํ„ฐ๋ ˆ์ดํ„ฐ๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜ (async๊ฐ€ Promise๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜๋“ฏ์ด, ์ œ๋„ˆ๋ ˆ์ดํ„ฐ๋Š” ์ดํ„ฐ๋ ˆ์ดํ„ฐ๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜๋‹ค.) โ€‹ ์ œ๋„ˆ๋ ˆ์ดํ„ฐ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜

inpa.tistory.com

โ€‹

 

โ€‹

โ€‹