<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>
댓글 없음:
댓글 쓰기