JavaScript, TS

함수 표현식

개발하는지호 2023. 11. 27. 01:09
//기본적인 함수 정의 함수 선언문 방식

/**
* JS Doc
* 두 수를 받아서 덧셈 결과를 반환
*
* @param {number} a
* @param {number} b
* @returns {number} 덧셈 결과를 반환합니다.
* @author 'jiho' //git
*/
function add(a, b) {
const result = a + b; //지역 변수 이면서 임시 변수
return result;
}
add
// console.log(result); -> 밖에서 안으로는 참조 불가능 역으로는 가능.
//
console.log(add(3, 5));

console.log(add('dff',4));


//뺄샘 기능

/** --> 이런 형태는 내가 만든 함수를 내 것이라고 말할 수 있고 방식을 설명할 수 있다.
*
* @param {number} a
* @param {number} b
* @returns {number}
* @author jiho
*/
function gap(a, b) {
return a - b;
}

console.log(gap(5, 3));


 
// 두 번째 함수 생성 방식 = '함수 표현식' 방식
 
 
// JS에서 함수는 일급 객체(First Citizen)으로 취급되기 때문
const mtp = function (a, b) {
return a * b;
}
// 함수를 mtp라는 변수에 담았기 때문에 mtp라는 이름으로 표현 가능 원래 있던 multiply 함수 표현 삭제
console.log(mtp(3, 5));


//ES(ECMAScript)6(2015년)에서 등장한 문법, 화살표 함수
const sub = (a,b) => { return a - b; }
console.log(sub);

console.log(sub(5, 3));

// 만약 구현부의 로직이 1줄일 경우 {}, return 키워드 생략
const sub2 = (a, b) => a - b;
console.log(sub2(5, 3));

//파라미터가 없으면
const hello = () =>console.log('hello!');
hello();

//파라미터가1개면?
const square = (x) => x * x;
const square2 = x => x * x;

console.log(square(5));

 

 

* 추가 지식

export 하고 import 등 모듈을 할 때 

 

const a = () => {} 형태는 전달 될때는 a 로 되지만, 다시 사용하기 위해서는

const b = a(); 이렇게 해야 한다. ㅋㅋ 의문이다.