JavaScript - ν•¨μˆ˜

Kim-DaHamΒ·2023λ…„ 2μ›” 21일
0

JavaScript

λͺ©λ‘ 보기
2/18
post-thumbnail

πŸ”₯ ν•™μŠ΅λͺ©ν‘œ

  • μžλ°”μŠ€ν¬λ¦½νŠΈ DeepDive 12μž₯, 18μž₯, 26μž₯ ν•™μŠ΅ν•˜κΈ°.

🟩 ν•¨μˆ˜λž€?

  • 일련의 과정을 문으둜 κ΅¬ν˜„ν•˜κ³  μ½”λ“œ λΈ”λ‘μœΌλ‘œ κ°μ‹Έμ„œ ν•˜λ‚˜μ˜ μ‹€ν–‰ λ‹¨μœ„λ‘œ μ •μ˜ν•œ 것.
  • μ½”λ“œ 쀑볡을 μ–΅μ œν•˜κ³  μž¬μ‚¬μš©μ„±μ„ λ†’μ—¬ μœ μ§€λ³΄μˆ˜μ˜ νŽΈμ˜μ„±β†‘ μ½”λ“œμ˜ 신뒰성↑
  • μ μ ˆν•œ ν•¨μˆ˜ 이름을 μ‚¬μš©ν•˜μ—¬ μ½”λ“œμ˜ 가독성 ν–₯상

🟣 ν•¨μˆ˜ μ •μ˜ 방법

⬜ ν•¨μˆ˜ μ„ μ–Έλ¬Έ

function add(x, y) {
	return x+y;
}
  • ν•¨μˆ˜ 이름 μƒλž΅ λΆˆκ°€.
  • ν‘œν˜„μ‹(κ°’μœΌλ‘œ 평가될 수 μžˆλŠ” λ¬Έ)이 μ•„λ‹Œ 문이닀. λ³€μˆ˜μ— ν• λ‹Ήν•  수 μ—†λ‹€.

⬜ ν•¨μˆ˜ ν‘œν˜„μ‹

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

// ν•¨μˆ˜λŠ” ν•¨μˆ˜ 이름(add)으둜 ν˜ΈμΆœν•˜λŠ” 것이 μ•„λ‹ˆλΌ ν•¨μˆ˜ 객체λ₯Ό κ°€λ¦¬ν‚€λŠ” μ‹λ³„μž(f)둜 ν˜ΈμΆœν•œλ‹€.
let result = f(1, 3);
  • ν•¨μˆ˜ 이름 μƒλž΅ κ°€λŠ₯.
  • λ³€μˆ˜μ— ν• λ‹Ήν•  수 있고, ν”„λ‘œνΌν‹° 값이 될 수 있으며, λ°°μ—΄μ˜ μš”μ†Œκ°€ 될 수 μžˆλ‹€.
  • β””β–Ά 이처럼 κ°’μ˜ μ„±μ§ˆμ„ κ°–λŠ” 객체λ₯Ό 일급 객체라 ν•œλ‹€.

⬜ Fuction μƒμ„±μž ν•¨μˆ˜

var add = new Fuction('x', 'y', 'return x+y');

Function μƒμ„±μž ν•¨μˆ˜λ‘œ ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜λŠ” 방식은 μΌλ°˜μ μ΄μ§€ μ•Šκ³  λ°”λžŒμ§ν•˜μ§€ μ•Šλ‹€.


⬜ ν™”μ‚΄ν‘œ ν•¨μˆ˜

const add = (x, y) => { ... } // λ§€κ°œλ³€μˆ˜ μ—¬λŸ¬ 개
const add = x => {...} // λ§€κ°œλ³€μˆ˜ ν•œ 개
const add = () => {...} // λ§€κ°œλ³€μˆ˜ μ—†μŒ
  • 항상 읡λͺ… ν•¨μˆ˜λ‘œ μ •μ˜ν•œλ‹€.
  • μƒμ„±μž ν•¨μˆ˜λ‘œ μ‚¬μš© λΆˆκ°€λŠ₯ ν•˜λ‹€.
  • κΈ°μ‘΄ ν•¨μˆ˜μ™€ this 바인딩이 λ‹€λ₯΄λ‹€.
  • prototype ν”„λ‘œνΌν‹°κ°€ μ—†λ‹€.
  • arguments 객체λ₯Ό μƒμ„±ν•˜μ§€ μ•ŠλŠ”λ‹€.

⬜ ν•¨μˆ˜ ν˜Έμ΄μŠ€νŒ…

  • ν•¨μˆ˜ 선언문이 μ„ λ‘λ‘œ λŒμ–΄ μ˜¬λ €μ§„ κ²ƒμ²˜λŸΌ μž‘λ™ν•˜λŠ” 것.
  • μ„ μ–Έλ¬ΈμœΌλ‘œ μ •μ˜ν•œ ν•¨μˆ˜λŠ” ν•¨μˆ˜ μ„ μ–Έλ¬Έ 이전에 ν˜ΈμΆœν•  수 μžˆλ‹€.
  • ν•¨μˆ˜ μ„ μ–Έλ¬Έκ³Ό ν•¨μˆ˜ ν‘œν˜„μ‹μ€ 각자 ν•¨μˆ˜μ˜ 생성 μ‹œμ μ΄ λ‹€λ₯΄κΈ° λ•Œλ¬Έμ΄λ‹€.

ν•¨μˆ˜ ν˜Έμ΄μŠ€νŒ… β‰  λ³€μˆ˜ ν˜Έμ΄μŠ€νŒ…

  • var ν‚€μ›Œλ“œλ‘œ μ„ μ–Έλœ λ³€μˆ˜λŠ” undefined둜 μ΄ˆκΈ°ν™” λœλ‹€.
  • ν•¨μˆ˜ ν‘œν˜„μ‹μœΌλ‘œ μ •μ˜ν•œ ν•¨μˆ˜λŠ” ν•¨μˆ˜ ν˜Έμ΄μŠ€νŒ…μ΄ μ•„λ‹Œ λ³€μˆ˜ ν˜Έμ΄μŠ€νŒ…μ΄ λ°œμƒν•œλ‹€.
  • λ³€μˆ˜ ν˜Έμ΄μŠ€νŒ…μ΄ λ°œμƒν•œλ‹€λŠ” 건, add()λ₯Ό ν‘œν˜„μ‹ μœ„μ—μ„œ ν˜ΈμΆœν–ˆμ„ λ•Œ ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•œ 게 μ•„λ‹ˆλΌ λ³€μˆ˜λ₯Ό ν˜ΈμΆœν•œ 게 λ˜λŠ” 것이닀. => λ”°λΌμ„œ TypeError: add is not function 을 좜λ ₯ν•œλ‹€.
    • (let 으둜 μ„ μ–Έν•œ ν•¨μˆ˜ ν‘œν˜„μ‹μ€ λ‹Ήμ—°νžˆ ν˜Έμ΄μŠ€νŒ… μ•ˆ λœλ‹€.)
  • ν•¨μˆ˜ 선언문을 톡해 μ•”λ¬΅μ μœΌλ‘œ 생성 된 μ‹λ³„μžλŠ” ν•¨μˆ˜ 객체둜 μ΄ˆκΈ°ν™”λœλ‹€.
  • ν•¨μˆ˜ ν˜Έμ΄μŠ€νŒ…μ€ ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜κΈ° 전에 λ°˜λ“œμ‹œ ν•¨μˆ˜λ₯Ό μ„ μ–Έν•΄μ•Ό ν•œλ‹€λŠ” λ‹Ήμ—°ν•œ κ·œμΉ™μ„ λ¬΄μ‹œν•œλ‹€. => πŸ”΄ κ·ΈλŸ¬λ―€λ‘œ ν•¨μˆ˜ ν‘œν˜„μ‹μ„ μ‚¬μš©ν•  것을 ꢌμž₯.



🟣 ν•¨μˆ˜ 호좜


⬜ λ§€κ°œλ³€μˆ˜μ™€ 인수

  • ν•¨μˆ˜λŠ” λ§€κ°œλ³€μˆ˜μ˜ κ°œμˆ˜μ™€ 인수의 κ°œμˆ˜κ°€ μΌμΉ˜ν•˜λŠ”μ§€ μ²΄ν¬ν•˜μ§€ μ•ŠλŠ”λ‹€.
  • μΈμˆ˜κ°€ ν• λ‹Ήλ˜μ§€ μ•Šμ€ λ§€κ°œλ³€μˆ˜μ˜ 값은 undefinedλ‹€.
  • μΈμˆ˜κ°€ 더 λ§Žμ€ 경우 초과된 μΈμˆ˜λŠ” λ¬΄μ‹œν•œλ‹€.

⬜ 인수 확인

μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ 경우 ν•¨μˆ˜λ₯Ό μ •μ˜ν•  λ•Œ μ μ ˆν•œ μΈμˆ˜κ°€ μ „λ‹¬λ˜μ—ˆλŠ”μ§€ 확인할 ν•„μš”κ°€ μžˆλ‹€.

function add(x, y) {
	if(typeof x !== 'number' || typeof y !== 'number')
    	throw new TypeError('μΈμˆ˜λŠ” λͺ¨λ‘ μˆ«μžμ—¬μ•Ό ν•©λ‹ˆλ‹€.');
}

ES6μ—μ„œ λ„μž…λœ λ§€κ°œλ³€μˆ˜ 기본값을 μ‚¬μš©ν•˜λ©΄ μ΄ˆκΈ°ν™”λ₯Ό 더 κ°„μ†Œν™”ν•  수 μžˆλ‹€.

function add(a=0, b=0, c=0) { }

🌠 #checkpoint.

  • ν•¨μˆ˜λŠ” ν•œ 가지 일만 ν•΄μ•Ό ν•˜λ©° 가급적 적게 λ§Œλ“€μ–΄μ•Ό ν•œλ‹€.
  • λ§€κ°œλ³€μˆ˜λŠ” μ΅œλŒ€ 3개 이상을 λ„˜μ§€ μ•ŠλŠ” 것을 ꢌμž₯ν•œλ‹€.



🟣 λ‹€μ–‘ν•œ ν•¨μˆ˜μ˜ ν˜•νƒœ

⬜ μ¦‰μ‹œ μ‹€ν–‰ ν•¨μˆ˜

(function () {
	var a=3;
    var b=5;
    return a*b;
 }());

읡λͺ… ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λŠ” 것이 μΌλ°˜μ μ΄λ‹€.

μ¦‰μ‹œ μ‹€ν–‰ ν•¨μˆ˜ 내에 μ½”λ“œλ₯Ό λͺ¨μ•„ 두면 μ€‘λ³΅λ˜λŠ” λ³€μˆ˜λ‚˜ ν•¨μˆ˜μ˜ μΆ©λŒμ„ 방지할 수 μžˆλ‹€.

μ „μ—­ λ³€μˆ˜ 생성을 막아 라이브러리 등에 많이 μ‚¬μš© λœλ‹€.


⬜ μž¬κ·€ ν•¨μˆ˜

  • λ°˜λ³΅λ¬Έμ„ μ‚¬μš©ν•˜λŠ” 것보닀 μž¬κ·€ ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λŠ” 편이 더 μ§κ΄€μ μœΌλ‘œ μ΄ν•΄ν•˜κΈ° μ‰¬μšΈ λ•Œλ§Œ ν•œμ •μ μœΌλ‘œ μ‚¬μš©ν•œλ‹€.

⬜ 콜백 ν•¨μˆ˜

ν•¨μˆ˜μ˜ λ§€κ°œλ³€μˆ˜λ₯Ό 톡해 λ‹€λ₯Έ ν•¨μˆ˜μ˜ λ‚΄λΆ€λ‘œ μ „λ‹¬λ˜λŠ” ν•¨μˆ˜

ν•¨μˆ˜μ˜ λ³€ν•˜μ§€ μ•ŠλŠ” 곡톡 λ‘œμ§μ€ 미리 μ •μ˜ν•΄ 두고,
κ²½μš°μ— 따라 λ³€κ²½λ˜λŠ” λ‘œμ§μ€ μΆ”μƒν™”ν•΄μ„œ ν•¨μˆ˜ μ™ΈλΆ€μ—μ„œ ν•¨μˆ˜ λ‚΄λΆ€λ‘œ μ „λ‹¬ν•œλ‹€.

var logAll = function (i) {
	console.log(i);
};

var logOdds = function(i) {
	if(i%2) console.log(i);
};

function repeat(n, func) {
	for( n번 λ™μ•ˆ ) func(i);
}
  • func : κ²½μš°μ— 따라 λ³€κ²½λ˜λŠ” 일
  • logAll : μ „λΆ€ 좜λ ₯ν•˜λŠ” ν•¨μˆ˜
  • logOdds : ν™€μˆ˜μΌ λ•Œλ§Œ 좜λ ₯ν•˜λŠ” ν•¨μˆ˜

⬜ 순수 ν•¨μˆ˜μ™€ λΉ„μˆœμˆ˜ ν•¨μˆ˜

  • 순수 ν•¨μˆ˜ : λ™μΌν•œ μΈμˆ˜κ°€ 전달 되면 μ–Έμ œλ‚˜ λ™μΌν•œ 값을 λ°˜ν™˜ν•œλ‹€.
    • μ™ΈλΆ€ μƒνƒœμ— μ˜μ‘΄ν•˜μ§€ μ•ŠλŠ”λ‹€.

    • 인수의 λΆˆλ³€μ„± μœ μ§€

    • ν•¨μˆ˜μ˜ μ™ΈλΆ€ μƒνƒœλ₯Ό λ³€κ²½ν•˜μ§€ μ•ŠλŠ”λ‹€.


🌠 #checkpoint.
ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ° : 순수 ν•¨μˆ˜μ™€ 보쑰 ν•¨μˆ˜μ˜ 쑰합을 톡해 μ™ΈλΆ€ μƒνƒœλ₯Ό λ³€κ²½ν•˜λŠ” λΆ€μˆ˜ 효과λ₯Ό μ΅œμ†Œν™” ν•΄μ„œ λΆˆλ³€μ„±(immutability)을 지ν–₯ν•˜λŠ” ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„.



🟣 일급 객체(first-class-citizen)

λ‹€μŒ μ„Έ 가지 쑰건을 가지면 일급 객체닀.

  • λ³€μˆ˜μ— ν• λ‹Ή(assignment)ν•  수 μžˆλ‹€.
  • λ‹€λ₯Έ ν•¨μˆ˜μ˜ μ „λ‹¬μΈμž(argument)둜 전달될 수 μžˆλ‹€.
  • λ‹€λ₯Έ ν•¨μˆ˜μ˜ κ²°κ³Όλ‘œμ„œ 리턴될 수 μžˆλ‹€.

즉 객체λ₯Ό 일반 데이터(string, number, boolean, array, object)처럼 λ‹€λ£° 수 μžˆλ‹€λŠ” 것이닀.

μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ ν•¨μˆ˜λŠ” 일급 객체닀.

ν•¨μˆ˜κ°€ 일급 κ°μ²΄λΌλŠ” 것은, ν•¨μˆ˜λ₯Ό 객체와 λ™μΌν•˜κ²Œ μ‚¬μš©ν•  수 μžˆλ‹€λŠ” λœ»μ΄λ‹€. κ°μ²΄λŠ” κ°’μ΄λ―€λ‘œ ν•¨μˆ˜λŠ” κ°’κ³Ό λ™μΌν•˜κ²Œ μ·¨κΈ‰ν•  수 μžˆλ‹€.


⬜ ν•¨μˆ˜ 객체의 ν”„λ‘œνΌν‹°

ν•¨μˆ˜λŠ” 객체닀. κ·ΈλŸ¬λ―€λ‘œ ν”„λ‘œνΌν‹°λ₯Ό κ°€μ§ˆ 수 μžˆλ‹€.

console.dir()

을 톡해 λΈŒλΌμš°μ € μ½˜μ†”μ—μ„œ ν•¨μˆ˜ 객체의 λ‚΄λΆ€λ₯Ό λ“€μ—¬λ‹€ λ³Ό 수 μžˆλ‹€.

λ…Έλž€μƒ‰ ν‘œμ‹œν•œ arguments, caller, length, name, prototype ν”„λ‘œνΌν‹°λŠ” λͺ¨λ‘ 일반 κ°μ²΄μ—λŠ” μ—†λŠ” ν•¨μˆ˜ 고유의 ν”„λ‘œνΌν‹°λ‹€.


⬜ arguments ν”„λ‘œνΌν‹°

arguments ν”„λ‘œνΌν‹°μ˜ 값은 arguments 객체닀.
arguments κ°μ²΄λŠ” ν•¨μˆ˜ 호좜 μ‹œ μ „λ‹¬λœ 인수(argument)λ“€μ˜ 정보λ₯Ό λ‹΄κ³ μžˆλŠ” 순회 κ°€λŠ₯ν•œ μœ μ‚¬ λ°°μ—΄ 객체닀.

μœ μ‚¬ λ°°μ—΄ κ°μ²΄λž€?

length ν”„λ‘œνΌν‹°λ₯Ό 가진 객체. for 문으둜 μˆœνšŒν•  수 μžˆλŠ” 객체λ₯Ό λ§ν•œλ‹€.

  • 인수λ₯Ό 적게 μ „λ‹¬ν•œ 경우: μΈμˆ˜κ°€ μ „λ‹¬λ˜μ§€ μ•Šμ€ λ§€κ°œλ³€μˆ˜λŠ” undefined둜 μ΄ˆκΈ°ν™”λœ μƒνƒœ μœ μ§€.
  • 인수λ₯Ό 많이 μ „λ‹¬ν•œ 경우: 초과된 μΈμˆ˜λŠ” λ¬΄μ‹œ. κ·Έλƒ₯ 버렀지지 μ•Šκ³  arguments 객체의 ν”„λ‘œνΌν‹°λ‘œ μ €μž₯.

⬜ callee / length ν”„λ‘œνΌν‹°

  • callee : arguments 객체λ₯Ό μƒμ„±ν•œ ν•¨μˆ˜, 즉 ν•¨μˆ˜ 자기 μžμ‹ μ„ 가리킨닀.
  • length : 인수의 개수λ₯Ό 가리킨닀.



🟣 ES6 ν•¨μˆ˜μ˜ μΆ”κ°€ κΈ°λŠ₯

⬜ ν•¨μˆ˜μ˜ ꡬ뢄

  • foo() : 일반적인 ν•¨μˆ˜λ‘œμ„œ 호좜
  • new foo(); : μƒμ„±μž ν•¨μˆ˜λ‘œμ„œ 호좜
  • var obj = {foo: foo}; obj.foo(); : λ©”μ„œλ“œλ‘œμ„œ 호좜

⬜ λ©”μ„œλ“œ

  • 객체 μ•ˆμ— μ‘΄μž¬ν•˜μ—¬, 객체의 'λ™μž‘'을 μˆ˜ν–‰ν•˜λŠ” ν•¨μˆ˜.
  • ES6 μ‚¬μ–‘μ—μ„œλŠ” λ©”μ„œλ“œ μΆ•μ•½ ν‘œν˜„μœΌλ‘œ μ •μ˜λœ ν•¨μˆ˜λ§Œμ„ μ˜λ―Έν•œλ‹€.
const obj = {
	x:1,
    foo() { return this.x;} // λ©”μ„œλ“œ
    bar: function() {return this.x;} // 바인딩 된 일반 ν•¨μˆ˜

⬜ ν™”μ‚΄ν‘œ ν•¨μˆ˜

  • 객체 λ¦¬ν„°λŸ΄μ„ λ°˜ν™˜ν•˜λŠ” 경우 객체 λ¦¬ν„°λŸ΄μ„ μ†Œκ΄„ν˜Έ()둜 감싸 μ£Όμ–΄μ•Ό ν•œλ‹€.
const create = (id, content) => ({id, content}); // 객체 λ¦¬ν„°λŸ΄ λ°˜ν™˜
const create = (id, content) => {return {id, content};}; // μœ„μ™€ 같은 λ‚΄μš©, λ‹€λ₯Έ ν‘œκΈ°

  • ν™”μ‚΄ν‘œ ν•¨μˆ˜λ„ 일급 객체닀. 즉 κ³ μ°¨ ν•¨μˆ˜μ— 인수둜 전달할 수 μžˆλ‹€.
[1,2,3].map(v=>v*2); // [2, 4, 6]

  • ν™”μ‚΄ν‘œ ν•¨μˆ˜λŠ” ν•¨μˆ˜ 자체의 this 바인딩을 갖지 μ•ŠλŠ”λ‹€.

    • λ”°λΌμ„œ ν™”μ‚΄ν‘œ ν•¨μˆ˜ λ‚΄μ—μ„œ thisλ₯Ό μ°Έμ‘° μ‹œ μƒμœ„ μŠ€μ½”ν”„μ˜ thisλ₯Ό μ°Έμ‘°ν•œλ‹€.
    • 이λ₯Ό lexical this 라 ν•œλ‹€.
  • ν™”μ‚΄ν‘œ ν•¨μˆ˜κ°€ μ€‘μ²©λ˜μ–΄ μžˆλ‹€λ©΄?

    • κ°€μž₯ κ°€κΉŒμš΄ μƒμœ„ ν•¨μˆ˜ μ€‘μ—μ„œ ν™”μ‚΄ν‘œ ν•¨μˆ˜κ°€ μ•„λ‹Œ ν•¨μˆ˜μ˜ thisλ₯Ό μ°Έμ‘°ν•œλ‹€.
  • ν”„λ‘œνΌν‹°μ— ν• λ‹Ήν•œ ν™”μ‚΄ν‘œ ν•¨μˆ˜λŠ”?

    • μŠ€μ½”ν”„ 체인 μƒμ—μ„œ κ°€μž₯ κ°€κΉŒμš΄ μƒμœ„ ν•¨μˆ˜ 쀑 ν™”μ‚΄ν‘œ ν•¨μˆ˜κ°€ μ•„λ‹Œ ν•¨μˆ˜μ˜ thisλ₯Ό μ°Έμ‘°ν•œλ‹€. λ”°λΌμ„œ λ©”μ„œλ“œλ₯Ό ν™”μ‚΄ν‘œ ν•¨μˆ˜λ‘œ μ •μ˜ν•˜λŠ” 것은 ν”Όν•΄μ•Ό ν•œλ‹€.

⬜ Rest νŒŒλΌλ―Έν„°

  • λ§€κ°œλ³€μˆ˜ 이름 μ•žμ— ...을 λΆ™μ—¬μ„œ μ •μ˜ν•œ λ§€κ°œλ³€μˆ˜.
  • ν•¨μˆ˜μ— μ „λ‹¬λœ μΈμˆ˜λ“€μ˜ λͺ©λ‘μ„ λ°°μ—΄λ‘œ μ „λ‹¬λ°›λŠ”λ‹€.
function foo(param, ...rest){
	console.log(param); // 1
    console.log(rest); // [2, 3, 4, 5]
}

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



🟩 μ˜ˆμ™Έ 처리

javaScript200제 ꡐ재 참고 - 35번 예제

μžλ°”μŠ€ν¬λ¦½νŠΈ μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜λ‹€κ°€ μ—λŸ¬κ°€ λ°œμƒν•˜λ©΄ κ·Έ μ¦‰μ‹œ 쀑단 λœλ‹€.

이λ₯Ό λŒ€λΉ„ν•΄μ„œ μ˜ˆμ™Έ μ²˜λ¦¬λŠ” λ°˜λ“œμ‹œ ν•„μš”ν•˜λ‹€.

🟣 throw 문

κ°œλ°œμžκ°€ μ˜λ„ν•œ μ—λŸ¬μ— λŒ€ν•œ μ˜ˆμ™Έ 처리. 고의둜 μ—λŸ¬λ₯Ό λ°œμƒμ‹œμΌœ μ˜ˆμ™Έ 상황을 μ•Œλ¦¬λŠ” 역할을 ν•œλ‹€. throw 문이 μ‹€ν–‰λ˜λ©΄ μ‹€ν–‰λ˜κ³  있던 블둝을 λΉ μ Έλ‚˜κ°„λ‹€.

function checkNumber(val) {
	if(typeof val !== 'number') throw 'μœ νš¨ν–μ§€ μ•Šμ€ κ°’μž…λ‹ˆλ‹€.';
    console.log('ν™•μΈλ˜μ—ˆμŠ΅λ‹ˆλ‹€.');
}

μ΄λŠ” κ²°κ΅­ μ—λŸ¬λ₯Ό λ°œμƒμ‹œν‚€κ²ƒμ΄λ―€λ‘œ, ν”„λ‘œκ·Έλž¨μ΄ μ€‘λ‹¨λ˜λŠ” 것은 막을 수 μ—†λ‹€. 이 μ—λŸ¬ λ°œμƒμ— λŒ€ν•œ λŒ€μ‘μ±…μ΄ λ°”λ‘œ μ•„λž˜ try-catch-finally 문이닀.


🟣 try-catch-finally 문

μ˜ˆμƒμΉ˜ λͺ»ν•œ μ—λŸ¬μ™€ κ°œλ°œμžκ°€ μ˜λ„ν•œ μ—λŸ¬ λͺ¨λ‘ λŒ€μ‘ κ°€λŠ₯ν•˜λ‹€.

  • try : ν•΄λ‹Ή 블둝 μ•ˆμ—μ„œ λ°œμƒλœ μ—λŸ¬λ₯Ό μž‘μ•„λ‚Έλ‹€.
  • catch : try λΈ”λ‘μ—μ„œ λ°œμƒλœ μ—λŸ¬ 정보가 λ³€μˆ˜λ‘œ 전달 λœλ‹€. μ œμ–΄κΆŒμ„ λ„˜κΈ΄λ‹€.
  • finally : μ—λŸ¬ λ°œμƒ 여뢀와 상관 없이 μ‹€ν–‰λ˜λŠ” 블둝
try {
	checkNumber(100);
    checkNumber('Wrong type');
    } catch (e) {
    	console.log(`μ—λŸ¬ λ°œμƒ >> ${e}`);
    } finally {
    	console.log('μ™„λ£Œ');
    }





πŸ“” 였늘의 ν›„κΈ°

  • κ°œλ…μ μΈ μ΄ν•΄λŠ” μ™„λ£Œ λ˜μ—ˆλ‹€. 일단 처음 λ³΄κ±°λ‚˜ μƒμ†Œν•œ κ°œλ…μ„ μ •λ¦¬ν–ˆλŠ”λ°, 정리 ν•˜λ©΄ ν• μˆ˜λ‘ 이건 κ·Έλƒ₯ μ‹€μŠ΅μœΌλ‘œ μ μš©ν•˜μ§€ μ•ŠλŠ” 이상 λ”±νžˆ μ˜λ―Έκ°€ μ—†λ‹€λŠ” 생각이 λ“ λ‹€.
  • λ‹€μŒ μˆ˜μ—… λλ‚˜κ³  직접 μ‹€μŠ΅ 해봐야겠닀.
  • κ·ΈλŸΌμ—λ„ λŒ€μΆ© 기본적으둜 μ•Œκ³ λŠ” μžˆμ–΄μ•Ό ν•˜λŠ” μ œμ–΄λ¬Έ/ν•¨μˆ˜ κ°œλ…κ³Ό κ·Έ ν™œμš©λ²•, μžμ„Ένžˆ μ•Œκ³ μžˆμ§€ λͺ»ν•œ 이둠적 κ°œλ…μ„ 읡히게 λ˜μ–΄μ„œ μΆ©λΆ„νžˆ κ°€μΉ˜μžˆμ—ˆλ‹€.
profile
λ‹€ ν•˜μž

0개의 λŒ“κΈ€