달력

12

« 2019/12 »

  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  
  •  
  •  
  •  

함수값을 리턴하는 함수

일반 값처럼 함수 값을 리턴할 수 있습니다.

   

함수를 리턴하는 함수 기능

  • 함수를 호출함과 동시에 다른 함수로 바꾸기
  • 자기 자신을 재정의하는 함수 구현

   

   

함수를 리턴하는 함수를 이용해 자신을 재정의하는 self함수 정의

   

소스 코드

<html>

<head>

<meta charset="UTF-8">

<title>자신을 재정의하는 함수 2</title>

<script type="text/javascript">

//self() 함수 정의

var self = function () {

var a= 10;

document.write('a' + '<br>');

return function () {

var b = 20;

document.write('b' + '<br>');

}

}

//원래 함수에서 리턴 받은 새로운 함수 참조값 저장

self = self(); // a

//새로운 함수 참조값으로 함수 호출

self();                 // b

</script>

</head>

<body>

</body>

</html>

   

출처: <https://github.com/10zeroone/study_javascript/blob/master/WebContent/ch04-function/27-1.html>

   

   

   

자신을 재정의하는 함수 도식도

   

   

   

동일한 결과이지만 외부 함수와 내부 함수 모두 익명함수로 self 함수 구현한 동일한 형태

   

소스 코드

<html>

<head>

<meta charset="UTF-8">

<title>자신을 재정의하는 함수 1</title>

<script type="text/javascript">

//self() 함수 정의

function self () {

var a= 10;

document.write('a' + '<br>');

return function () {

var b = 20;

document.write('b' + '<br>');

}

}

//원래 함수에서 리턴 받은 새로운 함수 참조값 저장

self = self(); // a

//새로운 함수 참조값으로 함수 호출

self();                 // b

</script>

</head>

<body>

</body>

</html>

   

출처: <https://github.com/10zeroone/study_javascript/blob/master/WebContent/ch04-function/27.html>

   

출력결과

동일함

   

   

(참조)

익명 내부함수로 정의 및 내부 익명함수를 리턴값으로 반환

09.html

Posted by codedragon codedragon

댓글을 달아 주세요

   

소스 코드

<html>

<head>

<meta charset="UTF-8">

<title>함수 스코프 외부에서 내부 함수 호출</title>

<script type="text/javascript">

//outter() 함수 정의

function outter() {

var a = 10;

var b = 20;

// 익명 내부 함수 정의후 inner변수에 내부 함수의 참조값을 저장

var inner = function () {

var b = 30;

//내부 함수에서는 자신을 둘러싼 외부함수의 변수에 접근이 가능

document.write(a + '<br>');

//b변수는 자신의 함수내에 선언되어 있으므로 외부함수의 b변수가 아닌 자신의 변수 b값이 출력됩니다.

document.write(b);

}

//inner 함수 변수를 리턴

return inner;

}

//outter()함수가 호출되면 inner함수 변수의 참조값이 반환됩니다.

var inn = outter();

//inner함수 변수의 참조값인 익명내부 함수의 참조값이 inn변수에 반환되었으므로 ()통해 함수호출하여 내부 함수를 정상적으로 호출

inn();

</script>

</head>

<body>

</body>

   

출처: <https://github.com/10zeroone/study_javascript/blob/master/WebContent/ch04-function/26.html>

   

   

   

함수 스코프 외부에서 내부 함수 호출 도식도

   

Posted by codedragon codedragon

댓글을 달아 주세요