블로그 보관함

2014년 3월 2일 일요일

JavaScript 09 내장함수

<script>
  "use strict";

   함수는 함수 안에서 정의될 수 있다
   * 내장 함수를 사용하는 이유
   1) 외부 공개를 제한 -> 공개적으로 사용하지 않는 함수는 숨겨서 필요할 때 함수 이름을 쓸 수 있게 한다
   2) 외부에서 변경 불가하게 만들고자 할 때 -> 보안 장치
  function calc(a, b, op) {
    switch (op) {
    case '+':
      return plus(a, b);
    case '-':
      return minus(a, b);
    default:
      throw '해당 연산자 없음'; // 예외 발생 명령어 throw
    }
    function plus(v1, v2) {
      return a + b;
    }
    function minus(v1, v2) {
      return a - b;
    }
  }

  function plus(v1, v2) {
    return false;
  }
  console.log(calc(10, 20, '+')); // 30
  console.log(plus(10, 20)); // Error!
  내장 함수의 다른 용도 : 공장 역할! "Factory Method" Pattern
  function runFactory(level) { // run() 함수를 만드는 공장역할!!
    switch (level) {
      case 2:
        return run2;
      case 3:
return run3;
      default:
return run1;
    }
    function run1() {
      console.log('달린다');
    }
    function run2() {
      console.log('뛴다');
    }
    function run3() {
      console.log('난다');
    }
  }
var level = prompt('Speed settin', '1');
var run = runFactory(level);
run(); // 1 달린다, 2 뛴다, 3 난다

// * function 을  parameter로 받기
function plus2(a, b) {
return a + b;
}
function minus2(a, b) {
return a - b;
}
function calc2(f, a, b) {
console.log(f(a, b));
}

console.log('파라미터로 함수를 받아서 호출하기-------------------');
calc2(plus2, 10, 20);
calc2(minus2, 10, 20);

// task : 반복문을 사용하지 않고 배열 다루기
function myEach(arr, f) {
for ( var i in arr) {
f(i, arr[i]);
}
};
var names = [ '홍길동', '임꺽정', '장길산', '장보고', '유덕화', '주윤발' ];

// 예전 방식
console.log('배열 처리 예전 방식--------------');
for ( var i in names) {
console.log(names[i]);
}
// myEach를 사용한 현대식 방식
console.log('myEach() 를 사용한 방식----------------');
var fx = function(indes, item) {
console.log(item);
}
myEach(names, fx);

console.log('myEach() + function(){} 를 사용한 방식----------------');
myEach(names, function(index, item) {
console.log(item);
})
</script>

댓글 없음:

댓글 쓰기