Skip to content

Latest commit

Β 

History

History
164 lines (103 loc) Β· 5.27 KB

06. ν•¨μˆ˜.md

File metadata and controls

164 lines (103 loc) Β· 5.27 KB

06. ν•¨μˆ˜

6.1. νƒ€μž…μŠ€ν¬λ¦½νŠΈ ν•¨μˆ˜ μ‚¬μš©

ν•¨μˆ˜λŠ” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ˜ μ½”λ“œλ₯Ό κ΅¬μ„±ν•˜λŠ” κΈ°λ³Έ μš”μ†Œμ΄λ‹€. νƒ€μž…μŠ€ν¬λ¦½νŠΈμ—μ„œ ν•¨μˆ˜λŠ” ν΄λž˜μŠ€λ‚˜ λ„€μž„μŠ€νŽ˜μ΄μŠ€ 내에 μ„ μ–Έν•  수 있고, λ•Œλ‘  λͺ¨λΌλ‘œμ„œ μ‚¬μš©λœλ‹€. νƒ€μž…μŠ€ν¬λ¦½νŠΈλŠ” μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ ν•¨μˆ˜λ₯Ό μ„ μ–Έν–ˆλ˜ 것과 λ™μΌν•œ λ°©μ‹μœΌλ‘œ μ„ μ–Έν•΄ μ‚¬μš©μžκ°€ μ›ν•˜λŠ” λ‹¨μœ„ κΈ°λŠ₯을 μˆ˜ν–‰ν•  수 μžˆλ‹€.

νƒ€μž…μŠ€ν¬λ¦½νŠΈμ™€ λ‹€λ₯Έ 점이 μžˆλ‹€λ©΄ ν•¨μˆ˜μ˜ λ§€κ°œλ³€μˆ˜λ‚˜ λ°˜ν™˜κ°’μ— νƒ€μž…μ„ 지정해 νƒ€μž… μ•ˆμ •μ„±μ„ κ°•ν™”ν•  수 μžˆλ‹€.

6.1.1. μžλ°”μŠ€ν¬λ¦½νŠΈ ν•¨μˆ˜

κΈ°λͺ… ν•¨μˆ˜μ™€ 읡λͺ… ν•¨μˆ˜μ˜ μ„ μ–Έ

function myFunction(a, b)
{
	
}

let resultMultiplication = function(a, b) {return a * b};

μžλ°”μŠ€ν¬λ¦½νŠΈ ν•¨μˆ˜μ˜ λΆˆμ•ˆμ „μ„±

  • ν•¨μˆ˜μ˜ λ§€κ°œλ³€μˆ˜μ— λŒ€ν•œ νƒ€μž… 검증(νƒ€μž…μ΄ μΌμΉ˜ν•˜μ§€ μ•ŠμœΌλ©΄ νƒ€μž… μΊμŠ€νŒ…)
  • ν•¨μˆ˜μ˜ 연산을 μˆ˜ν–‰ν•œ 후에 λ°˜ν™˜κ°’μ— λŒ€ν•œ νƒ€μž… μΊμŠ€νŒ…
  • ν•¨μˆ˜ 호좜 결과에 λŒ€ν•œ νƒ€μž… μΊμŠ€νŒ…

6.1.2. νƒ€μž… μ•ˆμ „μ„±μ„ κ°–μΆ˜ νƒ€μž…μŠ€ν¬λ¦½νŠΈ ν•¨μˆ˜

function max(x: number, y: number): number{ }

6.2. λ§€κ°œλ³€μˆ˜μ˜ ν™œμš©

6.2.1. κΈ°λ³Έ μ΄ˆκΈ°ν™” λ§€κ°œλ³€μˆ˜

κΈ°λ³Έ μ΄ˆκΈ°ν™” λ§€κ°œλ³€μˆ˜λŠ” ν•¨μˆ˜μ˜ νŠΉμ • λ§€κ°œλ³€μˆ˜μ— μΈμˆ˜κ°€ μ „λ‹¬λ˜μ§€ μ•ŠμœΌλ©΄ λ§€κ°œλ³€μˆ˜μ— μ„€μ •λœ μ΄ˆκΈ°κ°’μœΌλ‘œ 값을 μ΄ˆκΈ°ν™” ν•˜λŠ” κΈ°λŠ₯이닀.

y: number = 2

6.2.2. λ‚˜λ¨Έμ§€ λ§€κ°œλ³€μˆ˜

λ‚˜λ¨Έμ§€ λ§€κ°œλ³€μˆ˜ (rest parameter)λŠ” ES6μ—μ„œ μ œμ•ˆλœ νŠΉμ§•. κ°œμˆ˜κ°€ 정해지지 μ•Šμ€ 인수λ₯Ό λ°°μ—΄λ‘œ 받을 수 μžˆλŠ” κΈ°λŠ₯

function concat(...restParameter) {}

6.2.3. 선택 λ§€κ°œλ³€μˆ˜

선택 λ§€κ°œλ³€μˆ˜λŠ” 전달할 인수의 κ°œμˆ˜κ°€ 0개 이상 1개 미만으둜 μ œν•œν•  λ•Œ μ‚¬μš©.

function sum(a: number, b?: number): number {}

κΈ°λ³Έ μ΄ˆκΈ°ν™” λ§€κ°œλ³€μˆ˜λ₯Ό μ΄μš©ν•΄ μΈμˆ˜κ°€ μƒλž΅λΌ μžˆμ„ λ•Œ λ§€κ°œλ³€μˆ˜μ˜ μ΄ˆκΈ°κ°’μ„ μ„€μ •ν•  수 μžˆμ—ˆλ‹€. ν•˜μ§€λ§Œ 선택 λ§€κ°œλ³€μˆ˜μ™€ μ΄ˆκΉƒκ°’μ„€μ •μ€ 같이 μ‚¬μš©ν•  수 μ—†λ‹€.

6.2.4. ν•¨μˆ˜ μ˜€λ²„λ‘œλ“œ

ν•¨μˆ˜λͺ…은 κ°™μ§€λ§Œ, λ§€κ°œλ³€μˆ˜μ™€ λ°˜ν™˜ νƒ€μž…μ΄ λ‹€λ₯Έ ν•¨μˆ˜λ₯Ό μ—¬λŸ¬ 개 μ„ μ–Έν•  수 μžˆλŠ” νŠΉμ§•.

function add(a: string, b: string): string;
function add(a: number, b: number): number;
function add(a: any, b: any): any {
    return a + b;
}
function pick(x: {name: string}): number;
function pick(x: {month: number}): string;
function pick(x: number): numer;
function pick(x: any): any;

λ₯Ό μœ λ‹ˆμ–Έ νƒ€μž… ν˜•νƒœλ‘œ ν‘œν˜„ν•˜λ©΄

function pick(x: number | {month: number} | {name: string}) : string | number;
function pick(x: any): any;

둜 ν‘œν˜„ν•  수 μžˆλ‹€.

6.3. 읡λͺ… ν•¨μˆ˜μ˜ 이해와 ν™œμš©

6.3.1. 읡λͺ… ν•¨μˆ˜μ™€ ν™”μ‚΄ν‘œ ν•¨μˆ˜

() => {};

ν™”μ‚΄ν‘œ ν•¨μˆ˜λŠ” 읡λͺ… ν•¨μˆ˜λ‘œμ„œ λ§€κ°œλ³€μˆ˜ λͺ©λ‘, λš±λš±ν•œ ν™”μ‚΄ν‘œ, ν•¨μˆ˜ λΈ”λ‘μœΌλ‘œ κ΅¬μ„±λœλ‹€.

λ§€κ°œλ³€μˆ˜κ°€ ν•˜λ‚˜λ„ 없을 λ•ŒλŠ” ()둜 ν‘œν˜„ν•œλ‹€. λ§€κ°œλ³€μˆ˜κ°€ 1개일 λ•ŒλŠ” μ†Œκ΄„ν˜Έλ₯Ό μƒλž΅ν•  수 μžˆλ‹€.

ν™”μ‚΄ν‘œ ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•  λ•ŒλŠ” ν™”μ‚΄ν‘œ ν•¨μˆ˜κ°€ ν• λ‹Ήλœ λ³€μˆ˜λ₯Ό μ΄μš©ν•΄ ν˜ΈμΆœν•œλ‹€.

μ€‘κ΄„ν˜Έλ₯Ό μ‚¬μš©ν•œ 경우 λ°˜ν™˜κ°’μ΄ 있으면 return ν‚€μ›Œλ“œλ₯Ό μ΄μš©ν•΄ λ°˜ν™˜ν•΄μ•Ό ν•œλ‹€. λ§Œμ•½ μ€‘κ΄„ν˜Έλ₯Ό μ‚¬μš©ν•  λ•Œ return ν‚€μ›Œλ“œλ₯Ό μƒλž΅ν•˜λ©΄ ν™”μ‚΄ν‘œ ν•¨μˆ˜μ˜ λ°˜ν™˜κ°’μ΄ μ‘΄μž¬ν•˜μ§€ μ•Šκ²Œ λœλ‹€.

μ¦‰μ‹œ 호좜 ν•¨μˆ˜(IIF)

μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜λ©΄ λ³„λ„μ˜ μ™ΈλΆ€ ν˜ΈμΆœμ—†μ΄ 자체적으둜 ν˜ΈμΆœλ˜λŠ” ν•¨μˆ˜μ΄λ‹€.

(x => {x;})(3);

let iif = (x => {return x;})(3);

ν™”μ‚΄ν‘œ ν•¨μˆ˜λ₯Ό ν•„ν„° λ©”μ„œλ“œμ— 적용

ν™”μ‚΄ν‘œ ν•¨μˆ˜λŠ” ν•„ν„° λ©”μ„œλ“œμ— μ μš©ν•  수 μžˆλ‹€.

ν•„ν„° λ©”μ„œλ“œλŠ” λ°°μ—΄μ—μ„œ 쑰건에 λ§žλŠ” μš”μ†Œλ₯Ό μΆ”μΆœν•˜λŠ”λ° μ‚¬μš©ν•œλ‹€. ν•„ν„° λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•œ 방법은 for문을 μˆœνšŒν•΄ 쑰건에 λ§žλŠ” μš”μ†Œλ₯Ό μΆ”μΆœν•˜λŠ” 방법보닀 νŽΈλ¦¬ν•˜κ³  μœ μ§€λ³΄μˆ˜μ— μ’‹λ‹€.

let numberList = [1, 2, 3, 4, 5];
numberList = numberList.filter(n => {
    return n % 2 === 0;
});

ν™”μ‚΄ν‘œ ν•¨μˆ˜λ₯Ό λ¦¬λ“€μŠ€ λ©”μ„œλ“œμ— 적용

λ°°μ—΄ κ°’μ˜ 합을 μ†μ‰½κ²Œ ꡬ할 λ•ŒλŠ” λ¦¬λ“€μŠ€ λ©”μ„œλ“œ(reduce method)λ₯Ό μ΄μš”ν•  수 μžˆλ‹€. λ¦¬λ“€μŠ€ λ©”μ„œλ“œλŠ” λˆ„μ‚°κΈ°μ˜ μ›λ¦¬μ²˜λŸΌ λ°°μ—΄μ˜ μš”μ†Œλ₯Ό μ™Όμͺ½μ—μ„œ 였λ₯Έμͺ½μœΌλ‘œ λ”ν•΄λ‚˜κ°€λ©΄μ„œ λˆ„μ‚°λœ 값을 μ²˜λ¦¬ν•  수 μžˆλŠ” ν•¨μˆ˜μ΄λ‹€.

[1, 2, 3, 4, 5].reduce((a, b) => { return a + b;});
//a λŠ” λˆ„μ κ°’
//b λŠ” μΉ΄μš΄ν„° κ°’

이저 λˆ„μ κ°’μ€ ν™”μ‚΄ν‘œ ν•¨μˆ˜κ°€ λ°˜ν™˜ν•œ 값을 λˆ„μ ν•΄ 놓은 값이고, ν˜„μž¬ 값은 배열을 μˆœνšŒν•˜λ©΄μ„œ ν˜„μž¬ μœ„μΉ˜λ₯Ό κ°€λ¦¬ν‚€λŠ” μΉ΄μš΄ν„° 값이닀.

객체 λ¦¬ν„°λŸ΄μ˜ μ„ μ–Έκ³Ό 객체 λ¦¬ν„°λŸ΄ νƒ€μž…μ˜ μ„ μ–Έ

객체 λ¦¬ν„°λŸ΄(object literal)은 μ—¬λŸ¬ 속성과 값을 ν•œ λ‹¨μœ„λ‘œ λ¬Άμ–΄μ„œ ν‘œν˜„ν•  수 μžˆλŠ” 객체이닀. 객체 λ¦¬ν„°λŸ΄μ˜ 속성은 ν‚€κ°€ 되고, 값은 숫자만 λ¬Έμžμ—΄ 뿐만 μ•„λ¦¬λ‚˜ μ‚¬μš©μžκ°€ μ •μ˜ν•œ 객체도 ν• λ‹Ήν•  수 μžˆλ‹€

ν•¨μˆ˜λŠ” κ°μ²΄μ΄λ―€λ‘œ ν•¨μˆ˜λ„ 속성값을 ν• λ‹Ήν•  수 μžˆλ‹€.

let person = {
    name: "Happy",
    hello: function (name2: string) {
        console.log("Hello, " + this.name + name2);
    }
};
person.hello("World");

// μ‹€ν–‰ κ²°κ³Ό : Hello, HappyWorld