<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="icon" href="data:;base64,iVBORw0KGgo=">
<script type="text/javascript">
// ---------------------------
// 함수 선언문 방식으로 함수 만들기
function sub1(x, y) {
var s = x + y;
return s;
}
// 함수 호출
var result;
result = sub1(10, 5);
console.log(result);
//---------------------------
// 함수 표현식 방법으로 함수 만들기
var sub2 = function(x, y) { // 익명 함수
return x * y;
}
var multiply = sub2;
result = sub2(10, 5);
console.log(result);
result = multiply(3, 5);
console.log(result);
//---------------------------
// 기명 함수 표현식 방법으로 함수 만들기
var sub3 = function add(x, y) {
return x + y;
};
console.log(sub3(15, 5));
// console.log(add(15, 5)); // Error -> add is not defined
// 함수 표현식에서 사용한 함수 이름은 외부 코드에서 접근 불가
// 기명 함수 표현식을 이용한 재귀호출
var sub4 = function sum(n) {
return n > 1 ? n+ sum(n-1) : n;
}
console.log(sub4(10)); // 55
//---------------------------
// Function() 생성자를 이용한 함수 만들기
var sub5 = new Function('x', 'y', 'return x+y;');
console.log( sub5(7,8) ); //15
//---------------------------
// 즉시 실행 함수 - 정의함과 동시에 함수를 바로 실행
var a = (function(a, b) {
return a+b;
})(5, 7);
console.log(a);
(function(a, b){
var c = a + b;
console.log(c);
})(3, 5);
</script>
</head>
<body>
<h3> 함수</h3>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="icon" href="data:;base64,iVBORw0KGgo=">
<script type="text/javascript">
function fun(x) { // 외부함수
var n = 10;
// 내부함수(closure)
function sub(y) {
return n+x+y; // 외부 함수의 변수나 인수 접근 가능
}
return sub(3); // 외부 함수에서 내부 함수 접근
}
console.log( fun(2)); // 15
// ------------------------
function fun2(x) {
function sub2(y) {
return x + y;
}
return sub2;
}
var f = fun2(2); // 함수 객체를 반환
var n = f(3);
console.log(n); // 5
n = fun2(10)(5);
console.log(n); // 15
</script>
</head>
<body>
<h3>함수 - closures : 함수 내부에 작성된 함수</h3>
</body>
</html>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="icon" href="data:;base64,iVBORw0KGgo=">
<script type="text/javascript">
var seq = function() {
var n = 0;
return function() {
return ++n;
}
}
var fn = seq();
console.log( fn() ); // 1
console.log( fn() ); // 2
console.log( fn() ); // 3
</script>
</head>
<body>
<h3>함수 - closures : 함수 내부에 작성된 함수</h3>
</body>
</html>