함수는 동작을 나타내며, 값처럼 취급할 수 있으고, 값처럼 할당, 복사, 선언할 수 있다.
함수의 용도는 중복 코드를 피하기 위함이다.
함수를 만들기 위해서는
1. true / false 값을 빨리 구별해낼 줄 알아야함
2. 값을 잘게 쪼갤 수 있어야 함
🎈 함수 선언문 Function Declaration 과 호출
함수 선언문으로 함수를 생성하면, 함수가 독립된 구문 형태로 존재하게 된다.
function functionName(매개변수){
function body
} // 함수 선언
functionName(); // 함수 호출
함수를 호출하면 함수 본문이 실행됨
( ) : 함수실행연산
sum1();
function sum1(a,b){
returen a+b;
}
함수 자체가 통째로 lexical environment 에 올라가기 때문에 코드블록이 실행되기 전에 처리되어 함수 선언문 위에서 함수를 실행해도, 블록 내 어디서든 실행된다. - 권장사항 아님.
🎈 함수 표현식 Function Expression
함수 표현식으로 함수를 생성하면, 함수가 표현식의 일부로 존재하게 된다.
함수를 정의하는 것이 아닌 변수에 이름이 없는 함수 값을 참조시키는 형태
var functionName = function () {
내용
};
functionName();
함수 값을 참조시킨 변수 이름을 작성하고 ()를 붙혀줘도 실행시킬 수 있다.
sum2();
let sum2 = function (a,b) {
return a +b ;
};
sum2 라는 변수가 먼저 할당되었기 때문에 변수값만 올라감 => TDZ 에 들어가기 때문에 아무런 값도 할당되지 않은 상태가 되어 함수 표현식 위에 함수를 실행해주면 에러가 나타난다.
🎈 함수 표현식 vs 함수 선언문
차이점
1. 문법적인 차이
2. 자바스크립트 엔진이 언제 함수를 생성하는지
보통 가독성을 위해 함수선언 -> 함수호출 순서로 작성을 많이 한다.
callback 함수에서는 함수 표현식을 많이 쓴다
🎈 함수 전달인자 arguments 와 매개변수 parameters
// 전달된 두 수의 합을 계산해 제공하는 함수
function plus( n1, n2 ) {
let n1 = 1;
let n2 = 2;
return n1 + n2;
}
let result1 = plus( 1,2 );
let result2 = plus( 5,3 );
매개변수를 입력해주면 1이 n1에, 2가 n2 에 들어가는 변수를 내부적으로 지정해준다.
result1, result2 를 출력해보면 값이 나오지 않는다.
함수의 값을 얻기 위해서는 return 을 작성해 값을 "반환" 해줘야한다.
결과 값을 요구할 때 ( get ) | 결과 값을 요구하지 않을 때 ( set ) |
return 값 필요 | return 값 불필요 |
🎈 지역 변수 local variable
function sayHello(){
let message = "hello"
alert( message );
}
sayHello();
alert( message );
🎈 외부 변수 outer variable
지역 변수가 없는 경우에 사용 가능
🎈 화살표 함수 arrow function
function sayHi() {
console.log('function hi');
}
sayHi();
위의 일반 함수를 화살표 함수로 바꾸어 아래의 함수처럼 작성할 수 있다.
const sayHi = () => {
console.log('arrow hi');
};
sayHi();
매개변수가 있을 때,
const sayHi = (x) => {
return x;
};
console.log(sayHi("arrow")); // arrow
arrow 값이 첫 줄의 x 로 들어가게 되고, 다시 중괄호 안의 x 로 들어가서 return 된다. 그래서 콘솔에 찍힌 결과값은 arrow
const sayHi = (x) => x;
매개변수가 하나일 때 소괄호 생략 가능, 중괄호를 없애도 바로 값을 반환한다.
const calc = (x,y) => x + y;
console.log(calc(1,2));
매개변수가 2개일 때 이렇게 작성해주면, 아래의 1,2 값이 첫번째 (x,y) 값에 할당, x+y 값이 반환된다.
const calc = (x,y) => {
console.log( '2줄 이상' );
return x + y;
};
console.log(calc(1,2));
2줄 이상일 때 중괄호를 열고 작성해준다.
🎈 콜백 함수 callback function
함수는 반드시 question(질문)을 해야하고, 사용자의 답변에 따라 yes() 나 no() 를 호출합니다.
함수 본문이
함수를 함수의 인수로 전달하고, 필요하다면 인수로 전달한 함수를 나중에 호출하는 것
함수를 실행할 때 값으로 body 로
arguments 의 순서가 바뀌면 안됨
함수 안에서는 매개변수들이 변수의 역할을 할 수 있도록 값이 지정되어버림
( 오늘은 아주 기본만 공부하려고 하기 때문에... 콜백 함수에 대한 내용은 추후 추가 예정입니다...! )
'JS' 카테고리의 다른 글
비동기 프로그래밍 Ajax (1) | 2023.10.24 |
---|---|
비구조화 할당 (0) | 2023.08.03 |
모듈 프로그래밍 (0) | 2023.07.20 |
데이터타입 Data Type (0) | 2023.07.08 |
변수 Variable 와 상수 constant (0) | 2023.07.08 |