[JS] ν•¨μˆ˜ function

Suji KangΒ·2023λ…„ 7μ›” 12일
0

πŸ“Œ ν•¨μˆ˜?

πŸ“κΈ°λŠ₯을 ν•œλ‹€.
πŸ“μ—¬λŸ¬μ€„μ˜ μ½”λ“œλ₯Ό μž¬μ‚¬μš©ν•˜κΈ° μœ„ν•΄μ„œ μ‚¬μš©ν•œλ‹€.

✏️ 그쀑에 이미 λ§Œλ“€μ–΄μ§„ ν•¨μˆ˜:

console.log
alert
confirm
...λ“±λ“±

πŸ“ν•¨μˆ˜μ˜ μ •μ˜

세가지λ₯Ό μ •μ˜ν•œλ‹€
1. 인자(Argument)λ₯Ό λͺ‡κ°œ μ“Έμˆ˜ μžˆλŠ”μ§€ μ •μ˜ν•œλ‹€
✏️ ν•¨μˆ˜λ₯Ό μ •μ˜ν•  λ–„ λ§€κ°œλ³€μˆ˜(parameter)λ₯Ό μ‚¬μš©ν•˜λ©΄ ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λŠ” μ‚¬λžŒμ΄ μ†Œκ΄„ν˜Έ() μ•ˆμ— μ“΄ μΈμžκ°€ λ§€κ°œλ³€μˆ˜μ— 각각 μˆœμ„œλŒ€λ‘œ λŒ€μž…μ΄ λœλ‹€
✏️ ν•¨μˆ˜λ₯Ό λ§Œλ“œλŠ” μž…μž₯μ—μ„œ νŠΉμ • 값을 μ •ν• μˆ˜ μ—†κ³  ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λŠ” μ‚¬λžŒμ΄ μ •ν• μˆ˜λ§Œ μžˆμ„λ–„ λ§€κ°œλ³€μˆ˜(parameter)λ₯Ό 톡해 값을 μ „λ‹¬λ°›λŠ” 것이닀
ex) κ²½κ³  메세지(λ…Όλ¦¬μ μœΌλ‘œ)

2.ν•¨μˆ˜κ°€ μ–΄λ–»κ²Œ λ™μž‘ν•˜λŠ”μ§€ μ •μ˜ν•œλ‹€
✏️ μ€‘κ΄„ν˜Έ(body) μ•ˆμͺ½μ— μ½”λ“œκ°€ μœ„μ—μ„œλΆ€ν„° μ°¨λ‘€λ‘œ μ‹€ν–‰ν•œλ‹€

3.ν•¨μˆ˜μ‹€ν–‰ κ²°κ³Ό 값이 무엇이 λ˜λŠ”μ§€λ₯Ό μ •μ˜ν•œλ‹€
✏️ return κ°’; 을 톡해 ν•¨μˆ˜ μ‹€ν–‰ κ²°κ³Όλ₯Ό κ°’μœΌλ‘œ λ˜λŒλ €μ€€λ‹€.
✏️ ν•¨μˆ˜ μ‹€ν–‰ κ²°κ³ΌλŠ” return μ˜†μ—μžˆλŠ” 값이 λ˜λ―€λ‘œ μΉ˜ν™˜ν•΄μ„œ ν•΄μ„ν•˜λ©΄ λœλ‹€
✏️ return 이 μƒλž΅λ˜κ±°λ‚˜ return μ˜†μ— 값이 μ—†μœΌλ©΄ ν•¨μˆ˜ μ‹€ν–‰ κ²°κ³ΌλŠ” λͺ¨λ‘ undefined κ°€ λœλ‹€

✏️ ν•¨μˆ˜ μ‹€ν–‰κ²°κ³Όλ₯Ό μΆ”κ°€μ μœΌλ‘œ μ—°μ‚°ν•˜κ±°λ‚˜ κ΅¬λΆ„ν•΄μ„œ μ‚¬μš©ν•΄μ•Ό ν• λ•Œ

ex) promptν•¨μˆ˜ 
let myName = prompt('hihi);
console.log(myName);
// alert ν•¨μˆ˜λŠ” return 이 μ—†μŒ
let res = alert('κ²½κ³ ');
console.log(res);
//좜λ ₯κ°’ undefined

1. 일반적 ν•¨μˆ˜ μ •μ˜(κ³Όκ±°μ‚¬μš©)

function ν•¨μˆ˜μ΄λ¦„ () {
   μ½”λ“œ ...
}

✏️ ν•¨μˆ˜ν˜ΈμΆœμ—°μ‚°μž () λ₯Ό μ‚¬μš©ν•˜μ—¬ ν•¨μˆ˜λ₯Ό μ‹€ν–‰ν•œλ‹€.

//ν•¨μˆ˜ μ •μ˜ (test ν•¨μˆ˜)
function test() {
   console.log('μ•ˆλ…•ν•˜μ„Έμš”');
   console.log('λ°˜κ°‘μŠ΅λ‹ˆλ‹€');
}
//ν•¨μˆ˜ μ‹€ν–‰
test();
//좜λ ₯값은
//μ•ˆλ…•ν•˜μ„Έμš”
//λ°˜κ°‘μŠ΅λ‹ˆλ‹€

✏️ ν•¨μˆ˜μ˜ˆμ‹œ.

//μ•ˆλ…•ν•˜μ„Έμš” 좜λ ₯ κ°•μˆ˜μ§€ 좜λ ₯ λ°˜κ°‘μŠ΅λ‹ˆλ‹€ 좜λ ₯
function printName() {
    console.log('μ•ˆλ…•ν•˜μ„Έμš”');
    console.log('κ°•μˆ˜μ§€');
    console.log('λ°˜κ°‘μŠ΅λ‹ˆλ‹€');
}
printName();
//좜λ ₯값은
//μ•ˆλ…•ν•˜μ„Έμš”
//κ°•μˆ˜μ§€
//λ°˜κ°‘μŠ΅λ‹ˆλ‹€

πŸ“μ΄λ¦„μ„ μ—¬λŸ¬κ°€μ§€λ‘œ λ‹€λ₯΄κ²Œ 쓰고싢을떄.

πŸ“λ§€κ°œλ³€μˆ˜(parameter)1개

function printName(a) {
    console.log('μ•ˆλ…•ν•˜μ„Έμš”');
    console.log(a);
    console.log('λ°˜κ°‘μŠ΅λ‹ˆλ‹€');
}

printName('κ°•μˆ˜μ§€');
printName('κΉ€μ² μˆ˜');
printName('홍길동');
//좜λ ₯값은

//μ•ˆλ…•ν•˜μ„Έμš”
//κ°•μˆ˜μ§€
//λ°˜κ°‘μŠ΅λ‹ˆλ‹€

//μ•ˆλ…•ν•˜μ„Έμš”
//κΉ€μ² μˆ˜
//λ°˜κ°‘μŠ΅λ‹ˆλ‹€

//μ•ˆλ…•ν•˜μ„Έμš”
//홍길동
//λ°˜κ°‘μŠ΅λ‹ˆλ‹€

πŸ“λ©”κ°œλ³€μˆ˜(parameter) 2κ°œλ„ μ‚¬μš©κ°€λŠ₯

//aλΌλŠ” λ³€μˆ˜μ—λŠ” 이름
//bλΌλŠ” λ³€μˆ˜μ—λŠ” λ‚˜μ΄
function printName(a, b) {
    console.log('μ•ˆλ…•ν•˜μ„Έμš”');
    console.log(`${a}λ‹˜ 의 λ‚˜μ΄λŠ” ${b}μž…λ‹ˆλ‹€`);
    console.log('λ°˜κ°‘μŠ΅λ‹ˆλ‹€');
}

printName('κ°•μˆ˜μ§€', 20);
printName('κΉ€μ² μˆ˜', 50);
printName('홍길동', 30);

//좜λ ₯κ°’

//μ•ˆλ…•ν•˜μ„Έμš” 
//κ°•μˆ˜μ§€λ‹˜ 의 λ‚˜μ΄λŠ” 20μž…λ‹ˆλ‹€
//λ°˜κ°‘μŠ΅λ‹ˆλ‹€

//μ•ˆλ…•ν•˜μ„Έμš” 
//κΉ€μ² μˆ˜λ‹˜ 의 λ‚˜μ΄λŠ” 50μž…λ‹ˆλ‹€
//λ°˜κ°‘μŠ΅λ‹ˆλ‹€

//μ•ˆλ…•ν•˜μ„Έμš” 
//ν™κΈΈλ™λ‹˜ 의 λ‚˜μ΄λŠ” 20μž…λ‹ˆλ‹€
//λ°˜κ°‘μŠ΅λ‹ˆλ‹€
//ν•¨μˆ˜ μ‹€ν–‰ κ²°κ³Όλ₯Ό κ°’μœΌλ‘œ λ°›μ•„μ˜€μž
function f1(x) {
    2 * x + 1;
    return 'κ°•μˆ˜μ§€';
}
console.log(f1(5));
//좜λ ₯κ°’ : κ°•μˆ˜μ§€
//ν•¨μˆ˜ μ‹€ν–‰ κ²°κ³Όλ₯Ό κ°’μœΌλ‘œ λ°›μ•„μ˜€μž
function f1(x) {
   return 2 * x + 1;
}
console.log(f1(5));
//좜λ ₯κ°’ : 11

✏️ λ‹€λ₯Έμ˜ˆμ‹œ

function ν•¨μˆ˜μ΄λ¦„ (λ§€κ°œλ³€μˆ˜, λ§€κ°œλ³€μˆ˜, ...) {
   μ½”λ“œ ...
   return κ°’;
}

✏️ λ‹€λ₯Έμ˜ˆμ‹œ

function f2(x){
    return x * 3 + 3;
  }
  
  function f3(x){
    x * 3 + 3;
    return undefined;
  }
  
  let res1 = f2(3);
  let res2 = f3(3);

  //배열은 objectνƒ€μž… δΈ­ arrayνƒ€μž…
  // ν•¨μˆ˜λ„ 객체 object νƒ€μž…
  // μ€‘μ—μ„œλ„ function νƒ€μž…
  let res3 = f2;
  console.log(res3);

πŸ“Œ 읡λͺ…ν•¨μˆ˜(Anonymous function)(이름이 μ—†λŠ” ν•¨μˆ˜)

이름이 μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” ν•¨μˆ˜ : λ‹€μ‹œμ“°μ§€ μ•Šκ² λ‹€
μΌνšŒμ„±μœΌλ‘œ μ‚¬μš©ν•˜κ³  λ²„λ¦¬λŠ” ν•¨μˆ˜

function (λ§€κ°œλ³€μˆ˜, λ§€κ°œλ³€μˆ˜..){
  μ½”λ“œ
  μ½”λ“œ
  μ½”λ“œ
  ...
 }

πŸ“μ „ν†΅μ μΈ λ°©μ‹μ˜ ν•¨μˆ˜(μ˜›λ‚ μ— 많이 μ‚¬μš©) : 이름이 μ€‘λ³΅λ¬μ„λ•Œ 였λ₯˜λ‘œ ν‘œν˜„ν•΄μ£Όμ§€ μ•ŠλŠ”λ‹€ (κ·Έλž˜μ„œ μ‚¬μš©ν•˜μ§€μ•ŠμŒ)

function printName(a) {
    console.log('μ•ˆλ…•ν•˜μ„Έμš”');
    console.log(a);
    console.log('λ°˜κ°‘μŠ΅λ‹ˆλ‹€');
}
printName('κ°•μˆ˜μ§€');
//좜λ ₯κ°’: μ•ˆλ…•ν•˜μ„Έμš” κ°•μˆ˜μ§€ λ°˜κ°‘μŠ΅λ‹ˆλ‹€

βœοΈμ΄λ¦„μ—†λŠ” ν•¨μˆ˜, λ°”λ‘œ μ‹€ν–‰

(function (a) {
    console.log('μ•ˆλ…•ν•˜μ„Έμš”');
    console.log(a);
    console.log('λ°˜κ°‘μŠ΅λ‹ˆλ‹€');
})('κΉ€μ² μˆ˜');
//λ³΄ν†΅μ΄λ ‡κ²ŒλŠ” μ‚¬μš©μ•ˆν•¨.μ™œλƒλ©΄ 그러면 ν•¨μˆ˜λ₯Ό μ“°λŠ” μ˜λ―Έκ°€ μ—†κΈ° λ•Œλ¬Έ. 
//λ°”λ‘œμ“°κ³  λΆ€λ₯΄κ³  ν• ν•„μš”μ—†μŒ
//κ·Έλ ‡κΈ° λ•Œλ¬Έμ— λ‹€μŒκ³Ό 같은 방법을 μ‚¬μš©.

βœοΈμ΄λ¦„μ—†λŠ” ν•¨μˆ˜λŠ” λ³€μˆ˜μ— μ €μž₯해놓고 μ‚¬μš©

let tmp = function (a) {
    console.log('μ•ˆλ…•ν•˜μ„Έμš”');
    console.log(a);
    console.log('λ°˜κ°‘μŠ΅λ‹ˆλ‹€');
}
tmp('홍길동');

πŸ“1. 읡λͺ…ν•¨μˆ˜λ₯Ό λ³€μˆ˜μ— 담아놓고 μ‚¬μš©.

const λ³€μˆ˜ = function (λ§€κ°œλ³€μˆ˜, ...){
    μ½”λ“œ
    μ½”λ“œ
    μ½”λ“œ
    return κ°’;
}

ES6 μƒˆλ‘œμš΄ 버전

πŸ“2. ν™”μ‚΄ν‘œν‘œν˜„μ‹ (Arrow Function)을 ν†΅ν•œ 읡λͺ…ν•¨μˆ˜ 2가지 μ˜ˆμ‹œ

λ§€κ°œλ³€μˆ˜κ°€ ν•œκ°œλΌλ©΄ μ†Œκ΄„ν˜Έ()κ°€ μƒλž΅ κ°€λŠ₯ν•˜λ‹€
body μ•ˆμͺ½μ˜ μ½”λ“œκ°€ ν•œμ€„μ΄λΌλ©΄ μ€‘κ΄„ν˜Έ{}와 return이 μƒλž΅ κ°€λŠ₯ν•˜λ‹€.

βœοΈμ˜ˆμ‹œ

 function f1(a){
    console.log(a,'λ‹˜ μ•ˆλ…•ν•˜μ„Έμš”'); 
 }
//f1μƒλž΅κ°€λŠ₯
 function (a){
    console.log(a,'λ‹˜ μ•ˆλ…•ν•˜μ„Έμš”'); 
 }
//functionμƒλž΅κ°€λŠ₯
  (a)=>{
    console.log(a,'λ‹˜ μ•ˆλ…•ν•˜μ„Έμš”'); 
 }
//μ€‘κ΄„ν˜Έ, μ†Œκ΄„ν˜Έμƒλž΅κ°€λŠ₯ 
 a=> console.log(a, 'λ‹˜ μ•ˆλ…•ν•˜μ„Έμš”');
(λ§€κ°œλ³€μˆ˜, λ§€κ°œλ³€μˆ˜ ...) => {
    μ½”λ“œ
    μ½”λ“œ
    return κ°’;
}

✏️ ν™”μ‚΄ν‘œ ν‘œν˜„μ‹ 읡λͺ…ν•¨μˆ˜

((a) => {
    console.log('μ•ˆλ…•ν•˜μ„Έμš”');
    console.log(a);
    console.log('λ°˜κ°‘μŠ΅λ‹ˆλ‹€');
}) ('λ°•μ˜ν¬');
//λ‹€λ₯Έμ˜ˆμ œ λ³€μˆ˜λ†“κ³ 
let tmp2 = (a)=>{
    console.log('μ•ˆλ…•ν•˜μ„Έμš”');
    console.log(a);
    console.log('λ°˜κ°‘μŠ΅λ‹ˆλ‹€');
}

🌟객체 속에 ν•¨μˆ˜κ°€ λ“€μ–΄μžˆμ„ 수 μžˆλ‹€. (κ°μ²΄λŠ” μ—¬λŸ¬κ°œμ˜ 값을 μ €μž₯ν•˜κΈ°μœ„ν•΄μ„œ μ‚¬μš©)

// 150 κ°’κ³Ό 'κ°•μˆ˜μ§€' κ°’κ³Ό πŸŒŸν•¨μˆ˜λ₯Ό μ €μž₯ν•˜κ² λ‹€
let person = {
    age: 150,
    title: 'κ°•μˆ˜μ§€',
    f: () => console.log('μ•ˆλ…•ν•˜μ„Έμš”')
}
console.log(person.age);//좜λ ₯κ°’ 150
console.log(person.title);//좜λ ₯κ°’ κ°•μˆ˜μ§€
person.f(); //좜λ ₯κ°’ μ•ˆλ…•ν•˜μ„Έμš”

β—οΈμƒμ„±μžν•¨μˆ˜(constructor function), 객체λ₯Ό μƒμ„±ν•΄μ£ΌλŠ” ν•¨μˆ˜ this

thisλ₯Ό 톡해 μžμ‹ μ΄ μ†ν•œ 객체 λ˜λŠ” μžμ‹ μ΄ 생성할 μΈμŠ€ν„΄μŠ€μ˜ ν”„λ‘œνΌν‹°λ‚˜ λ©”μ„œλ“œλ₯Ό μ°Έμ‘°ν•  수 μžˆλ‹€.

πŸ‘‰ μ˜ˆμ‹œ

// μ±… 제λͺ©, 가격, μ €μž
function Book(a, b, c) {
    this.price = a;
    this.title = b;
    this.author = c;
}

❗️new μƒμ„±μž() --> 객체(object)κ°€ λ§Œλ“€μ–΄μ§„λ‹€

newν‚€μ›Œλ“œλ‘œ ν•¨μˆ˜λ₯Ό μ‹€ν–‰ν•˜λŠ” 방식이닀.
newλΌλŠ” ν‚€μ›Œλ“œλ₯Ό μ΄μš©ν•΄ ν•¨μˆ˜λ₯Ό 호좜 μ‹œ, μƒˆλ‘­κ²Œ μƒκ²¨λ‚œ 빈 객체λ₯Ό λ°˜ν™˜ν•œλ‹€.

let b1 = new Book(100, '홍길동전', '미상');
console.log(b1);
console.log(typeof b1); //좜λ ₯κ°’ object

*κ²°κ³Όκ°’

βœοΈλ‚ μ§œ 객체

// 년도, μ›”, 일, μš”μΌ, μ‹œ, λΆ„, 초
//'2023-07-14'
let day =new Date();
let day =new Date('2023-07-14');
console.log(day);
console.log(day.getDate());
console.log(day.getDay());
profile
λ‚˜λ₯Όμœ„ν•œ λ…ΈνŠΈν•„κΈ° πŸ“’πŸ”ŽπŸ“

0개의 λŒ“κΈ€

κ΄€λ ¨ μ±„μš© 정보