javascript는 절차적 언어라 함수가 중요해서 sub-program이라고도 불림(프로그램 안 작은 단위의 기능을 수행)
함수는(function) object이다.
함수는 input과 output 그리고 이름이 중요하다.
한가지 task를 실행하거나 값을 계산하기 위해 쓰임.
하나의 함수는 한가지 일만 하도록 한다.
변수이름은 명사이지만 함수이름은 동사형태로 한다.
- javascript의 함수를 봐서는 매개변수의 자료형을 알 수 없음
-> typescript 사용- typescript 홈페이지의 playground에서 typescript로 코드 작성하면 javascript코드로 변환해줌
//typescript function printMessage(message: string): number{ console.log(message); return 0; } //javascript "use strict"; function printMessage(message){ console.log(message); return ; }
- premitive 변수에는 값이 저장되고 object에는 reference가 저장된다.
fnction changeName(obj){ obj.name='coder'; } const lucas = {name:'lucas'}; changeName(lucas); console.log(lucas); // coder즉, object의 주소가 저장되어 있는 lucas는 상수라 변경될 수 없지만, lucas안의 name이라는 변수는 변경 가능하다.
- 파라미터에 기본값을 지정함
fucntion showMessage(message, from = 'unknown'){ console.log(`${message} by ${from}`) } showMessage('Hi') // Hi from unknown
출력하는 반복문 3가지 방법
function printAll(...args){ //첫번째 for(let i=0;i<args.length;i++){ console.log(args[i]); } //두번째 for of for(const arg of args){ console.log(arg); } //세번째 forEach() args.forEach((el)=>console.log(el)) }
- 함수 선언뒤 속성값 이용 가능
function example{ console.log("example"); } example.length; // lenght 등 다양한 속성 사용 가능
- return이 없는 함수는 return undefined로 정의한 것과 같음
- 함수안에 조건문이 있다면 return을 빠르게 해서 탈출하게 하라
- 함수 안에서 if문이 있을 때: 조건이 맞지 않는 경우를 먼저 설정해 return을 해서 빨리 빠져나가게 해주는 것이 좋음
- function declearion Vs function expression
- function declearion은 일반적인 함수 선언 사용법
: 호이스팅이 됨- function expression은 함수를 선언함과 동시에 변수에 할당
: 변수에 할당 되었으므로 호이스팅이 안됨
- 함수에 파라미터로 함수를 전달하는 것
function test(answer, printYes, printNo){ if(answer == 'hi'){ printYes(); }else{ printNo(); } } const printYes = ()=> console.log('Yes'); const printNo = ()=> console.log('No'); test('hello', printYes, printNo); // No test('hi', printYes, printNo); // yes-디버깅할때 함수를 확인 하기 위해 함수이름을 지정해줌
-arrow 함수의 경우 한줄 이상이면 return을 따로 써줘야 함
- 함수 선언과 동시에 호출
(function hello() { console.log('IIFE'); })();// IIFE