1. 함수

함수의 사용은 함수의 정의와 함수의 호출로 나뉜다.

 

 

 

1-1. 함수의 정의

function 함수이름(){
	.. 실행할 구문 ..
}

 

 

 

1-2. 함수의 호출

함수를 호출하기 위해서는 함수이름(); 형태를 사용한다.

함수이름();

 

 

 

1-3. 파라미터(parameters)가 있는 함수

// 함수의 정의
function 함수이름(파라미터){
	.. 실행할 구문 ..
}

// 함수의 호출
함수이름(파라미터);

 

 

 

1-4. 다중 파라미터가 있는 함수

// 함수의 정의
function 함수이름(파라미터1, 파라미터2, ..., 파라미터n){
	.. 실행할 구문 ..
}

// 함수의 호출
함수이름(파라미터1, 파라미터2, ..., 파라미터n);

 

 

 

1-5. return형 함수

자신이 호출된 위치로 되돌려 주기 위해서 "return"이라는 키워드를 작성한다.

// 함수 생성
function f(x){
	return x+1;
}

// 함수 호출
let y = f(4);	// y = 5;

 

 

 

1-6. 함수의 실행 중단(return의 중요한 의미)

자바스크립트 함수는 처리 도중 return문을 만나게 되면 그 즉시 실행을 중단한다.

리턴 값이 없이 처리를 중단하고자 하는 경우에는 return 키워드만 사용한다.

값이 없는 리턴 결과를 변수에 대입한 경우, 정의되지 않는 값인 "undefined"가 대입된다.

 

[예제 코드]

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<script type="text/javascript">
		function f(x, y) {
			let z = x + y;
			
			// 값이 10보다 작을 경우 실행 중단
			if(z<10){
				return;
			}
			return z;
		}
		
		// 함수 호출
		let a = f(2,1);
		let b = f(5,7);
		let c = f(10,5);
		
		document.writeln("<h1>" + a + "</h1>");
		document.writeln("<h1>" + b + "</h1>");
		document.writeln("<h1>" + c + "</h1>");
	</script>
</body>
</html>

▶ document.writeln은 자바의 System.out.println과 사용 방법은 같고, 출력되는 곳이 어디인지만 다르다.

▶ 따옴표(쌍따옴표, 홑따옴표 상관 없음)를 사용해서 넣어준 html 태그는 그대로 작동된다.

 

[출력 결과]

let a가 function f(x, y)를 호출했을 때, z 가 10보다 작은 3이므로 if문 안에 들어가 값 없이 리턴된다.

 

 

 

1-7. 그 외

  • 함수 내 리턴이 여러 개라면 첫 번째 리턴만 유효하다.
function getLan() {
    return 'javascript';
    return 'test';
    return 'user';
}

alert(getLan());	// javascript

 

  • 파라미터 값이 정해진대로 주어지지 않는 경우
function f(x,y){
    return x + y;
}

document.write(f(1,2) + '<br>');	// 3

// 오류 없이 알아서 앞에 두 개만 읽어 옴
document.write(f(1, 2, 5) + '<br>');	// 3

// NaN 출력
document.write(f(1) + '<br>');
document.write(f() + '<br>');

▶ 파라미터를 두 개만 받는 함수를 호출할 때 파라미터를 여러 개 적어 놓으면, 앞에 두 개만 알아서 읽어 적용시킨다.

▶ 반대로 파라미터를 1개 또는 아무것도 적지 않는다면 NaN이 출력된다.

▶ NaN은 Not-a-Number를 뜻하는데, 나온 값이 숫자가 아니라는 뜻이다.

 

  • 다른 함수 호출
function sum(x, y){
    let z = x + y;
    return z;
}

function printResult(x, y) {
    let result = sum (x, y);
    documnet.write("<h1>" + result + "</h1>");
}

printResult(5, 6);	// 11

 

  • 익명 함수
    익명 함수는 일회성 호출용이다.
    생성과 동시에 즉시 호출한다.
(function(){
    let i = 0;
    while(i<10){
        document.write(i);
        i += 1;
    }
})();

 

 


 

 

2. 화살표 함수(arrow function)

위의 함수보다 단순하고 간결한 문법으로 함수를 만드는 방법

 

2-1. 매개변수가 없는 경우

let foo = () => console.log('arrow func');
foo();	// arrow func

 

 

 

 

2-2. 매개변수가 하나인 경우

소괄호 생략이 가능하다.

let foo2 = x => document.write(x);
foo2('arrow func2');	// arrow func2

 

 

 

 

2-3. 매개변수가 여러 개인 경우

소괄호 생략 불가능

let foo3 = (a, b) => a+b;	// return이 생략되어 있음
document.write(foo3(1, 3));	// 4

 

 

 

 

2-4. {} 사용

// {}를 사용했는데 return이 없을 경우
let foo4 = (a, b) => {a+b};
document.write(foo4(1, 3));	// undefined > 값이 return되지 않음

// return 값일 경우 return 명시
let foo5 = (a, b) => {return a+b};
document.write(foo5(1, 3));	// 4

 

 

 

 

2-5. 본문이 여러 줄인 경우

let foo6 = (a, b) => {
    const c = 3;
    return a + b + c;
};
document.write(foo6(1, 3));	// 7

 

 

 

 

2-6. 삼항 연산자 이용

let age = prompt('나이를 알려주세요.');
let welcome = (age < 18) ? () => alert('안녕') : () => alert('안녕하세요');
welcome();

 

 

 

2-7. 예제

function ask(question, yes, no){
    if(confirm(question )){
        yes();
    } else{
        no();
    }
}

// 익명 일반 function
// function()을 매개변수로 사용할 수 있다.
/* ask("동의하십니까?", 
        function(){alert("동의하셨습니다.")}, 
        function(){alert("취소 버튼을 누르셨습니다.")}); */

// 익명 화살표 function
ask("동의하십니까?", 
        () => alert("동의하셨습니다."),
        () => alert("취소 버튼을 누르셨습니다."));

 

[출력 결과]

 

728x90

'이론 > 자바 풀스택 국비수업' 카테고리의 다른 글

220511 Javascript 문제  (0) 2022.06.21
220510 Javascript 5  (0) 2022.06.21
220510 Javascript 3  (0) 2022.06.21
220509 Javascript 2  (0) 2022.06.21
220509 Javascript 1  (0) 2022.06.18

+ Recent posts