2023. 8. 25. 16:34ㆍLang/JavaScript
Javascript 복습하기 4
함수 :
- 특정기능을 수행하는 소스코드를 하나로 묶어 필요할 때마다 호출하는 독립적으로 설계된 블록
- Java와 마찬가지로 매개변수 유무 와 return 유무로 형태가 나뉘어짐
1. 함수 선언식 : 일반적인 함수선언 방식
- 구조 : function 함수명 (매개변수1,매개변수2..) {
return .... ;
}
- 예시 :
// 1. 함수 선언문
// 매개변수 O + return O
function addNum(num1, num2) {
return num1+num2;
}
(=> 매개변수와 return 없어도 상관없음)
2. 함수 표현식 : 스크립트 언어 특징을 활용한 선언방식 ( 익명함수 형태로 선언 -> 변수에 참조 )
- 구조 : let 변수명 = function (매개변수1,매개변수2..) {
return .... ;
}
- 예시 :
// 2. 함수 표현식 : 익명함수 형태로 선언-> 변수에 참조
let addNum2 = function(num1,num2){
return num1+num2;
}
** 함수 선언식 vs 함수 표현식
1) 호이스팅
: 호이스팅(Hoisting)은 JavaScript에서 인터프리터가 변수와 함수의 메모리 공간을 선언 전에 미리 할당하는 것을 의미
모든 선언을 가장 위로 끌어올리는 역할을 함
- 변수 범위에 따라 다르게 동작
(1) 전역 범위 : 전역 범위에서는 스크립트 단위에서 최상단으로 끌어 올려진다
(2) 함수 범위 : 함수 범위에서는 해당 함수의 최상단으로 끌어올려진다.
( but, 끌어올려지는 건 선언만 -> 할당내용은 X
1. 함수선언식 | 2. 함수 표현식 | |
호이스팅 영향 | O | X |
=> 함수 선언식은 호이스팅에 영향을 받기 때문에 호이스팅을 고려하지 않은 프로그램을 짜게되면 코드가 꼬일 수 있다.
반면, 함수 표현식은 영향을 받지 않아 상대적으로 편하게 개발할 수 있다.
(* Tip! 함수와 변수를 가급적 코드 상단부에 선언하면 호이스팅으로 인한 스코프 꼬임 현상은 방지 가능하다.)
2) 클로저 , 콜백
: 클로저(Closure)는 내부 함수가 외부함수의 스코프에 접근할 수 있도록 해줌
즉, 외부함수의 인수를 내부 함수가 사용 할 수 있게 하는 역할
: 콜백(CallBack)은 다른 함수에 인수로 전달되어, 특정 작업이 완료된 후에 실행되는 함수
=> 함수선언식 과 함수 표현식 모두 클로저와 콜백을 사용할 수 있지만 익명함수를 이용할 수 있는 함수 선언식이 더 쉽고 간단하게 사용가능하다.
3. 화살표함수 : function 키워드 대신 화살표를 사용한 방법 (익명함수로만 선언)
- 구조 : ( 매개변수 ) => { 실행문장 }
- 예시 :
let addNum = (num1,num2) => {
return num1+num2;
}
=> 생략해서 더 간단하게 선언 가능
- 매개변수가 1개 일때 -> 소괄호() 생략 가능
let intro= name => {
console.log(`자알생긴 ${name}입니다`)
}
- return이 1개의 값의 형태로 반환될 때 -> return, 중괄호{} 생략가능
let addNum2= (num1,num2) => num1+num2;
** + 백틱
: 백틱(backtick)은 문자열을 보다 쉽게 사용할 수 있도록 도와주는 새로운 유형의 문자열 리터럴(literal)
- 백틱은 작은따옴표(')이나 큰따옴표(") 대신 (`)를 쓴다 ( 키보드상의 (~) 표시가 있는 key이다)
- 구조 : `${변수명1} 과 ${변수명2}는 ~이다 `
- 예시 :
let num1=10;
let num2=20;
console.log(num1+"과"+"의 합은 "+(num1+num2)+"입니다"); // 백틱 사용 X
console.log(`${num1}과 ${num2}의 합은 ${num1+num2}입니다.`); // 백틱 사용 O
여기까지가 JavaScript의 기본적인 문법이었다.
처음에 공부할때 미리 정리 해둘껄 후회중..
'Lang > JavaScript' 카테고리의 다른 글
JavaScript 기본편(3) - 기본문법 (0) | 2023.08.24 |
---|---|
JavaScript 기본편(2) - 실행위치 (0) | 2023.08.24 |
JavaScript 기본편(1) (0) | 2023.08.08 |