JAVASCRIPT

function

KimNani 2022. 1. 24. 23:11

function 의 정의와 특징

1. 프로그램을 구성하는 기본적인 빌딩 블럭이다.

2. 서브프로그램이라고 볼 수 있다.

3. 재사용이 가능하다.

 

function의 선언에 관하여

1. function name(param1, param2){ body ... return;} 

2. one function === one thing 

: 하나의 함수로는 하나의 일만 하는것이 좋다.

: 예를들어 함수명이 createCardandPoint 라면, createCard, createPoint 처럼 구분지어 나누는 것이 좋다.

: 함수는 동작하는것이기 때문에 네이밍은 동사, 커맨드 형태로 지정하는것이 좋다.

3. function은 object 이다. 

: 변수할당, 파라미터로 전달, 함수 리턴이 가능하다.

4. local scope

{} 블럭 안에서 변수를 선언하게 되면 지역변수가 됨.

지역변수는 같은 블럭 안에서만 접근이 가능함.

{}블럭 안에 선언된게 아니라면 전역변수가 됨.

전역변수는 {}블럭 안에서도 접근할 수 있음.

같은 맥락으로 중첩된 function 함수에서 자식 함수가 부모 함수에 접근이 가능하지만,

부모함수는 자식 함수에 접근할 수 없음.

closer

5. return

return 값이 지정되어있지 않은 함수는, return undefined 이 생략되어있는 것임.

6. function expression

//함수를 선언함과 동시에 print에 할당함.
//함수 이름이 없고 함수라는 키워드를 이용해서 파라미터와 블럭을 이용한것을 anonymous function
const print = function(){ 
	console.log('print');
}

//함수의 이름이 있는 것은 named function 
const print = function print(){ 
	console.log('print');
};

print(); //print가 출력됨
const printAgain = print;
printAgain(); //print가 출력됨

호이스팅 적용이 안됨.

 

7. callback

//callback function
function randomQuiz(answer,printYes, printNo){
	if(answer==='love you'){
    	printYes();
    }else{
    	printNo();
    }
}

const printYes = function(){
	console.log('yes!');
}

const printNo = function print(){
	console.log('no!');
}

randomQuiz('wrong', printYes, printNo); //no!를 리턴
randomQuiz('love you', printYes, printNo); //yes!를 리턴

 

8. arrow function

const simplePrint = function(){
	console.log('so simple!');
}

//arrow function 으로 변경하면
//항상 이름이 없음, function 와 {}을 안써도 됨.
const simplePrint = () => console.log('so simple!');

const add = (a,b) => a+b;

const simpleMultiply = (a,b) =>{ //블럭이 필요할때는 리턴값을 불러줘야함.
	return a*b;
}

 

9. IIFE

//함수를 선언함과 동시에 실행시키고자 할때 ()로 감싼다.
(function hello(){
	console.log('IIFE');
})();