반응형

생성자(Function)응 이용한 함수 정의 방법

[광고 누르면 오늘의 행운 상승!!]

var 변수 = new Function("인자1", "인자2","함수코드");

 

예)

var toCelsius= new Function("fahr", "return Math.floor(5 * (fahr - 32) / 9);");

var value = toCelsuis(100);
alert("화씨 100도씨는 섭씨" + value + "입니다.");

 

익명 함수

  • 이름 없이 생성되는 함수 생성되어 변수(함수의 이름 역할)에 할당
Function toCelsius(fahr){
		retrun Math.floor(5 * (fahr - 32) / 9);
}
var tempConvert = toCelsius;
var value = toCelsuis(100);
alert("화씨 100도씨는 섭씨" + value + "입니다.");

함수이름 = 함수 객체를 가리키는 참조

 

익명함수 정의

  1. 생성자 이용
    → 함수를 동적으로 생성
    → 함수 호출 → 함수 생성 → 함수처리 → 함수 소멸
    → 반복문에서 사용된다면? 좋지않은 결과 초래(매번 함수 생성)
  2. 함수 리터럴

함수 리터럴(literal)

  • 함수 : 리터럴 형태로 함수 정의 가능 → 함수는 데이터로 인식 되지 않음

<<생성자를 이용한 객체 생성(String, Number)>>

var num = new Number(1234.567);
var str = new String("Hello World");

 

<<생성자를 이용한 함수 생성>>

var func = new Function("name", "return 'Hi' + name + '!!';"); //익명 함수 / 동적 함수

 

<<메소드, 프로퍼티 적용>>

var num2 = num.toFixed(1); //1234.6
var str2 = str.replace("Hello", "Hi"); //  Hi World!

 

<<함수 객체 → 메소드와 프로퍼티 적용 가능>>

  • 기본 데이터 타입 , 함수 : 객체
  • 문자열, 숫자 : 원시 데이터 타입 존재 → 숫자 리터럴, 문자 리터럴
var num = new Number(1234.567);
var str = new String("Hello World");

//메소드 & 프로퍼티 이용 

var num2 = num.toFixed(1); //1234.6
var str2 = str.replace("Hello", "Hi"); //  Hi World!


//선언적 정의 함수도 동일하게 적용됨
  • 함수 리터럴 → 생성자 없이 함수생성하여 변수에 할당 가능
  • 표현방법
var toCelsius = function(fahr){
	return Math.floor(5 * (fahr - 32) / 9);
};
var value = toCelsius(100)

//한 번 사용되고 버려지는 형태로 사용할 것

//함수 리터럴은 표현식이기 때문에 함수 리터럴 정의 후에 사용해야 한다.
  • 콜백 함수 : 메소드 실행 시 자동으로 호출되는 함수

  • 배열 검사 메소드의 콜 백 함수

<<filter 메소드 >>

원하는 요소 정리하여 새로운 배열 반환

배열 객체 검사용 메소드 사용 시 콜 백 함수 전달인자 : element, index, array
10이상의 엘리먼트만 필터링하여 새로운 배열 만드는 코드

function isBingEnough(element,index,array){
	return (element>=10);
}

var filtered = [12,5,8,130,44].filter(isBigEnough);
document.write(filtered.toString());

//자동으로 isBigEnough() 콜 백 함수 호출
// 12,130,44

 

<<forEach>>

forEach 메소드 : 엘리먼트 하나하나 조작 시 사용
							   엘리먼트 하나하나 콜 백 함수에 전달하여 처리
function hiUser(element,index,array){
	document.write("<p> Hi " + element + "!</p>");
}

var user = ["jerry", "tom", "steve"];
user.forEach(hiUser);

Hi jerry!
Hi tom!
Hi steve!

 

<<every>>

모든 배열 요소 콜 백 함수에서 제시하는 요소 통과 시 true, 실패 시 false 반환

function isBigEnough(element, index, array){
	return (element >= 10);
}

var passed = [12,5,8,130,44].evry(isBigEnough) // false

var passed = [12,54,18,130,44].evry(isBigEnough) // true

 

<<map>>

배열 요소 하나 하나에 콜 백 함수 처리 후 새로운 배열 반환

function sayBabyAnimal(animal){
	var result;
	switch(animal){
			case "개" 
			   result = "강아지";
			break;
			case "닭" 
			   result = "병아리";
			break;
	}
	return result;
}

var animals = ["고양이", "개", "다람쥐"];
var baby = animals.map(sayBabyAnimal);<<map>>

 

<<some>>

every와 논리적으로 반대되는 경우

콜 백 함수 요구하는 엘리먼트 한 개라도 존재 : true
콜 백 함수 요구하는 엘리먼트 하나도 없으면 : false;

 

재귀함수filter

  • 함수 내부에서 자신을 다시 호출하는 함수
  • 복잡한 코드 간단히 표현 가능
  • 팩토리얼 함수
반응형

+ Recent posts