1. parameters

<script>
function changeName(obj){
	obj.name = 'coder';
}
const brain = {name:'web'};
changeName(brain);
console.log(brain);
</script>

return 값은 { name : "coder"} 이다.

parameters의 값을 지정해서 변경 시킬 수 있음.

오브젝트는 레퍼런스로 전달되기떄문에, 함수 안에서 오브젝트의 값을 변경하게 되면 변경된 사항이 그대로 메모리에 전달됨.

 

2. Default parameters (es6)

//파라미터 갯수가 맞지 않을때
function showMessage(message, from='unknown'){
	console.log(`${message} by ${from}`);
}
showMessage('Hi~!');

parameters 인 from 의  default 값을 미리 지정해 놓을 수 있다. parameters 로 값이 넘어오면, 넘어온 값이 나온다.

 

3. Rest parameters (es6)

// ...obj 는 배열 형태로 전달되어짐
function printAll(...args){

	for(let i=0; i<args.length; i++){
    	console.log(args[i]);
    }
    
    //배열을 출력할때 간편한 방법
    //1.
    for(const arg of args){ //args의 값들이 arg로 하나씩 들어감
        console.log(arg);
    }
    //2.
    args.forEach((arg) => console.log(arg));


}
printAll('web','brain','nani');

 

'JAVASCRIPT' 카테고리의 다른 글

페이지 새로고침 시 GET 파라미터 제거  (0) 2022.02.23
새로고침 방지하기  (0) 2022.02.23
input type='file' multiple 업로드 미리보기  (0) 2022.02.02
class와 object  (0) 2022.01.30
function  (0) 2022.01.24

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');
})();

'JAVASCRIPT' 카테고리의 다른 글

페이지 새로고침 시 GET 파라미터 제거  (0) 2022.02.23
새로고침 방지하기  (0) 2022.02.23
input type='file' multiple 업로드 미리보기  (0) 2022.02.02
class와 object  (0) 2022.01.30
parameters  (0) 2022.01.24

+ Recent posts