함수의 사용은 함수의 정의(선언)와 함수의 호출로 나뉜다.
함수의 정의(선언)방법
function 함수이름() { ... 실행할 구문 ... }
함수 호출 방법
함수이름();
자바스크립트에서는 함수의 이름 뒤에 위치한 괄호()
안에 파라미터를
기술한다.
파라미터가 있는 함수의 정의(선언)방법
function 함수이름(파라미터) { ... 실행할 구문 ... }
파라미터가 있는 함수의 호출
함수이름(파라미터);
다중 파라미터 함수의 경우에는 콤마,
로 구분한다.
다중 파라미터가 있는 함수의 정의(선언)방법
function 함수이름(파라미터 1, 파라미터 2,...){ ... 실행할 구문 ... }
다중 파라미터가 있는 함수의 호출
함수이름(파라미터1, 파라미터2, ...);
리턴값은 결과값, 함수에서 반환하는 값을 뜻한다. return
문으로 리턴값을 지정한다.
- 예시
function f(x){ return x + 1; } var y = f(5); // y = 6
자바스크립트 함수는 처리 도중 return
문을 만나게 되면 그 즉시 실행을 중단한다. 이러한 특성을 이용하여 특정 조건이 충족되지 않을 경우 등에 대한 처리중단을 목적으로 return
문을 사용할 수 있으며, 리턴값 없이 처리를 중단하고자 하는 경우에는 return
키워드만 사용한다.
- 예시
function f(x,y) { var z = x + y; // 조건 if( z < 10 ) { return; } return z; }
이 때 값이 없이 리턴 결과를 변수에 대입한 경우, 정의되지 않은 값인 undefined
가 대입된다.
- 예시
var a = f(2,1); document.write("<h1>" + a + "</h1>") a = f(5,7); document.write("<h1>" + a + "</h1>") a = f(10,5); document.write("<h1>" + a + "</h1>")
- 출력 형태
- 예시
function sum(x,y) { var z = x + y; return z; } function printResult(x,y){ var result = sum(x,y); document.write("<h1>" + result + "</h1>"); } printResult(7,10);
- 출력 형태
지금까지처럼 var
로 변수 선언을 할 경우 선언 기준이 너그러운 나머지 같은 이름으로 재선언이 가능해 혼란을 가져올 수 있다는 문제점이 있다. 따라서 변수 선언 시let
또는 const
를 사용하는 것이 좋다.
변수 선언 방식 | 재선언 | 변수 재할당 |
---|---|---|
var | 가능 | 가능 |
let | 불가능 | 가능 |
const | 불가능 | 불가능 |
재할당이 필요하지 않은 상수와 객체에는 const
를 사용하는 것이 권장된다.
- 예시
let str = "100 + 1"; document.write("<h1>" + str + "</h1>"); let result = eval(str); document.write("<h1>" + result + "</h1>");
- 출력 형태
주어진 문자열의 변수가 숫자 모양일 경우 실제 숫자형으로 변환한다.
Number()
: 주어진 문자열이 실수 형태일 경우 그대로 변환한다.
parseInt()
: 주어진 문자열이 실수 형태일 경우 소수점 자리를 내림하고 정수만 리턴한다.
- 예시
let value = "100.6"; let num1 = Number(value); let num2 = parseInt(value); let r1 = value + 1; let r2 = num1 + 1; let r3 = num2 + 1; document.write("<h1>" + r1 + "</h1>") document.write("<h1>" + r2 + "</h1>") document.write("<h1>" + r3 + "</h1>")
- 출력 형태
Number
함수와 parseInt
함수는 파라미터로 전달된 문자열이 숫자형태가 아닌 경우 NaN
이라는 값을 리턴한다. 이 NaN
값과 숫자값과의 연산은 모든 결과가 NaN
이다.
- 예시
let a = Number("a"); document.write("<h1> a = " + a + "</h1>"); let a_sum = a + 1; document.write("<h1> a_sum = " + a_sum + "</h1>"); let a_str = a + "str"; document.write("<h1> a_str = " + a_str + "</h1>");
- 출력 형태
isNaN
은 변수의 NaN
여부를 검사하는 함수다. 파라미터로 전달되는 변수의 NaN
여부를 boolean
형태로 리턴한다.
NaN
이므로 true
리턴 NaN
이 아니므로 false
리턴parseInt
함수나 Number
함수의 정상동작을 보장하기 위해서는 파라미터를 전달하기 전에 해당 값이 NaN
이 아니라는 것을 검사해야 한다.
isNan
함수의 결과가 false
이면 그 값은 숫자값이거나 숫자형으로 변환 가능한 문자열이라는 의미가 된다.
let is_num = !isNaN(검사할값);
alert
- 웹페이지에서 가장 일반적으로 사용되는 대화상자.
확인
버튼이 함께 표시된다.alert("알림 대화상자");
prompt
- 사용자의 입력 내용을 얻고자 하는 경우에 사용하는 대화상자.
확인
,취소
버튼이 함께 표시된다.let str = prompt("입력할 대화상자","")
- 만약 아무런 값도 입력되지 않았으면 처음 설정한 빈 문자열(
""
)이 리턴되고, 취소를 누르면null
이 리턴된다.
confirm
- 사용자에게 어떠한 결정사항에 대한 긍정 혹은 부정의 답을 얻고자 하는 경우에 표시되는 대화상자.
확인
,취소
버튼이 함께 표시된다.- 리턴값은
boolean
값이다.
function numbering(){...}
numbering
이라는 이름으로 함수를 호출할 수 있으나 함수 자체는 익명이다.
- 예시
let numbering = function(){ let i = 0 ; while (i < 10){ document.write(i); i += 1; } } // 호출 방식은 동일 numbering();
함수 표현식보다 단순하고 간결한 문법으로 함수를 만드는 방법이다.
매개변수가 없는 경우
() => { ... }
매개변수가 1개인 경우
x => { ... } // 소괄호 생략 가능
매개변수가 두 개 이상인 경우
(x,y,..) => { ... } // 소괄호 생략 불가능
함수가 한 줄의 구문이라면 중괄호를 생략할 수 있으며 암묵적으로 return
된다.
예시) x => x * x
중괄호를 사용할 시에는 반드시 return
을 포함해야 하며 그렇지 않을 시 값을 리턴하지 못한다.
예시) x => { return x * x }
함수로 선언하여 사용하는 예
let foo = () => { document.write('foo function') } foo(); document.write("<br>") let foo2 = x => document.write(x); foo2('user');
- 출력 형태
- 즉시 실행 함수 예시
(function(){ let i = 0; while( i < 10 ) { document.write(i); i += 1; } })();
(() => { if(confirm("동의하십니까?")){ alert("동의하셨습니다.") }else{ alert("취소 버튼을 누르셨습니다.") } })();