반응형
생성자(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 + "입니다.");
함수이름 = 함수 객체를 가리키는 참조
익명함수 정의
- 생성자 이용
→ 함수를 동적으로 생성
→ 함수 호출 → 함수 생성 → 함수처리 → 함수 소멸
→ 반복문에서 사용된다면? 좋지않은 결과 초래(매번 함수 생성) - 함수 리터럴
함수 리터럴(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
- 함수 내부에서 자신을 다시 호출하는 함수
- 복잡한 코드 간단히 표현 가능
- 팩토리얼 함수
반응형
'5. 웹 프로그래밍 > 3. JavaScript' 카테고리의 다른 글
객체의 이해 [JavaScript][객체][NameSpace] (0) | 2020.03.19 |
---|---|
함수의 유효 범위 [JavaScript][클로저][apply/call] (0) | 2020.03.19 |
이벤트의 이해 [JavaScript][이벤트전파][이벤트막기] (0) | 2020.03.19 |
웹 문서의 조작 [JavaScript][getArrtibute][setArrtibute] (0) | 2020.03.19 |
웹 문서 접근 [JavaScript][getElementBy][querySelector] (0) | 2020.03.19 |