일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 티스토리 전체글수표시
- 롤 현질얼마나 했는지보기
- 언리얼
- 스팀 돈얼마나 썼는지보기
- 비주얼스튜디오 코드 폰트
- 롤에 돈얼마나썼지
- 비주얼스튜디오 코드 글꼴
- 앤드류 테이트
- Class1
- 스팀에 돈 얼마나 썼지
- 티스토리사진
- 신경론
- 티스토리전체글수
- 가운뎃점 입력
- 티스토리 코드블록
- 쿠르츠 게작트
- 스팀 사용 금액
- 도파 신경론
- 어도비플래시삭제
- 티스토리사진한줄에 여러개
- 백준
- 자바스크립트 defer
- 게임 네트워킹
- 롤 현질금액보기
- c++
- 명언
- 자바메모
- 도선생님 신경론
- 한글 가운뎃점
- 어도비플래시서비스종료
- Today
- Total
Small Step
[JS] 공부 - 엘리코딩 JS 5 함수의 선언과 표현 본문
자바스크립트에서는 Function(함수)의 역할이 되게 중요하다.
입력값을 받고 함수에 따라 원하는 결과를 출력한다.
그래서 함수에는 INPUT과 OUTPUT이 있는 게 특징이다.
subprogram이라고 불릴 정도로 신경 써서 제작하는 게 좋다.
이 함수는 여러 번 사용할 수 있다는 장점이 있다.
하나의 함수는 한 가지의 일만 하도록 만들어야 한다.
함수의 이름을 정하기가 너무 어렵다면 이 함수가 너무 많은 일을
하는 건 아닌지 확인해 보면 좋다.
자바스크립트에서 함수는 객체이다.
객체로 간주되기 때문에 변수에 할당할 수도 있고 파라미터로 전달할 수도 있다.
함수의 선언 방법은 다음과 같다.
function name(parameter) {
body
return ;
}
함수의 이름, 함수로 전달될 파라미터와
함수의 기능, 리턴 값을 설정해주면 함수는 완성된다.
간단하게 입력받은 매시 지를 출력하는 함수를 만들어 보자.
function message(contents) {
console.log(contents);
}
message('Hello JavaScript!');
이렇게 함수 이름(입력값); 을 입력하여 함수를 호출할 수 있다.
Parameter
함수의 INPUT값으로 전달되는 파라미터는 함수, 변수, 값 등등
여러 가지를 전달할 수 있다.
객체를 전달할 때는 객체의 레퍼런스를 전달하는데 이를 통해 객체 안에 있는
값들을 바꾸는 함수를 만들 수도 있다.
function changeName(obj) {
obj.name = 'changed by function';
}
const myProfile = { name : 'JavaScript'};
console.log(myProfile);
changeName(myProfile);
console.log(myProfile);
이 코드를 실행해보면 myProfile안에 있는 name의 값이 바뀐 것을 볼 수 있다.
Default Parameters (added in ES6)
//Default Parameters (added in ES6)
function showMessage(message, from) {
console.log(`${message} by ${from}`);
}
showMessage('Hello!');
위의 코드를 실행해보면 showMessage함수에는 두 개의 파라미터를 받지만
호출할 때 하나의 파라미터만을 넣었다. 그래서 undefined로 출력이 되게 되는데
이걸 수정하려면 전에는 이렇게 if를 사용해서 정의를 해줘야 한다.
//Default Parameters (added in ES6)
function showMessage(message, from) {
if(from === undefined) {
from = 'unknown';
}
console.log(`${message} by ${from}`);
}
showMessage('Hello!');
그런데 ES6에서는 파라미터의 기본값을 정해줄 수 있다.
//Default Parameters (added in ES6)
function showMessage(message, from = 'unknown') {
console.log(`${message} by ${from}`);
}
showMessage('Hello!');
이렇게 코드를 바꿔도 결과는 똑같이 나온다.
Rest Parameters (added in ES6)
이것도 ES6에서 새로 추가된 기능이다.
//Rest Parameters (addedin ES6)
function printAll(...args) {
for(let i = 0; i < args.length; i++) {
console.log(args[i]);
}
}
printAll('WEB', 'HTML', 'CSS', 'JavaScript');
파라미터에... 을 넣게 되면 파라미터로 배열을 전달할 수 있다.
이 코드를 실행하면 다음과 같이 나온다.
for을 이용해 조금 더 간단하게 출력할 수도 있다.
//Rest Parameters (addedin ES6)
function printAll(...args) {
for(const arg of args) {
console.log(arg);
}
}
printAll('WEB', 'HTML', 'CSS', 'JavaScript');
Local Scope
밖에서는 안을 볼 수 없고 안에서만 밖을 볼 수 있다.
local scope를 설명하는 문장이다.
함수를 선언하면서 함수 안에서 변수를 만들 수 있는데
이것을 지역변수라고 한다.
이 지역변수는 함수 밖에서는 쓸 수 없다. (밖에서 안을 볼 수 없다.)
그러나 함수안에서는 함수 밖에서 선언했던 변수는 쓸 수 있다.(안에서는 밖을 볼 수 있다.)
Return
모든 함수는 값을 리턴한다.
리턴을 따로 정해주지 않으면 return undefined이고 따로 리턴 값을 정해줄 수 있다.
function sum(a, b) {
return a + b;
}
const result = sum(4, 3);
console.log(result);
Early return, early exit
이건 코드를 조금 더 가독성이 좋게 쓸 수 있는 방법이다.
예를 들어 유저 포인트가 10이 넘으면 실행하는 함수를 만든다고 해보자.
//Early return, early exit
function upgradeUser(user) {
if(user.point > 10) {
}
}
function upgradeUser(user) {
if(user.point <= 10) {
return;
}
}
빨리 리턴을 시키는 것이 더 좋다.
조건이 맞지 않으면 리턴을 하여 빨리 함수를 종료하게 작성하는 게 조금 더 좋다.
Functino expression
함수는 변수에도 할당할 수 있다.
//Function expression
const print = function () {
console.log('print!');
};
print();
print 변수를 함수 호출하듯이 사용하면 사용이 된다.
const printAgain = print;
printAgain();
이렇게 함수를 할당한 변수를 또 변수에 할당할 수 있다.
이것 또한 함수를 호출하는 것처럼 사용하면 사용이 된다.
Callback hell
//Callback
function randomQuiz(anser, printYes, printNo) {
if(anser === 'love you') {
printYes();
}
else {
printNo();
}
}
먼저 위의코드에서는 printYes와 printNo함수를 각자 참과 거짓일 때 호출을 한다.
이렇게 함수를 부르는걸 콜백함수라고 한다.
Arrow function
함수를 간단하게 만들수 있게 해 준다.
const simplePrint = () => console.log('simple print!');
const add = (a, b) => a + b;
간닪게 작성이 가능하지만 리턴, 파라미터도 설정이 가능하다.
IIFE
IIFE를 사용하면 함수를 선언과 동시에 호출이 가능하다.
(function hello () {
console.log('IIFE');
})();
이렇게 함수를 괄호로 감싸고 함수를 호출하는것처럼 쓰면 선언과 동시에 호출기 가능하다.
'코딩 > JS' 카테고리의 다른 글
[JS] 공부 - 엘리코딩 JS 4 연산자와 반복문 (0) | 2021.01.28 |
---|---|
[JS] 공부 - 엘리코딩 JS 3 (0) | 2021.01.15 |
[JS] 공부 - 엘리코딩 JS 2 (0) | 2021.01.06 |