'값'으로서의 함수
JavaScript에서는 함수도 객체
이다.
JavaScript의 함수는 다른 언어의 함수와 달리 함수가 값
이 될 수 있다.
first-class citizen/object/entity/value
function a(){ // 함수
} // 함수 a는 변수 a에 담겨진 값
a = {
b:function() { // 메소드
}
};
function cal(func, num){
return func(num)
}
function plus(num){
return num + 1
}
alert(cal(plus, 2)); // 함수 plus와 값 2가 함수 cal의 인자로 전달
function cal(mode){
var func = {
'plus' : function(a, b) {
return a + b
}
}
return func[mode]; // 객체 func의 key값인 'plus'의 value를 리턴
}
alert(cal('plus')(1, 2)); // 즉시 호출하기 위해 괄호 사용
var cal = [
function(num){ return num + 1;},
function(num){ return num * num;},
function(num){ return num / 2;}
];
var num = 1;
for(var i = 0; i < cal.length; i++){ // i값이 증가할 때마다 배열 cal의 해당 인덱스에 속하는 값인 함수가 실행
num = cal[i](num);
}
alert(num); // 2->4->2
값으로 사용될 수 있는 특성을 이용해 함수의 인자로 함수를 전달
값으로 전달된 함수는 호출될 수 있어 함수의 동작을 바꿀 수 있음
function ascendSortNumber(a, b){
// 비교 대상인 a와 b가 인자로 전달된다.
// a에서 b를 뺀 결과가 음수면 a가 b보다 작고, 0이면 같다.
// sort메소드는 return 값이 음수,양수,0인지에 따라서 순서를 정한다.
return a - b; // 오름차순 정렬
function descendSortNumber(a, b){
return b - a; // 내림차순 정렬
const numbers = [20, 10, 3, 2, 1];
alert(numbers.sort(ascendSortNumber)); // [1, 2, 3, 10, 20]
alert(numbers.sort(descendSortNumber)); // [20, 10, 3, 2, 1]
sort는 배열을 정렬할 때 사용하는 메소드(원본 변경)
문법-> array.sort([sortfunc])
인자 sortfunc은 옵션값이며 인자가 비어 있을 경우 문자열로 형변환되어 정렬됨(예. 1, 10, 2,...)
제대로 정수형으로 정렬하기 위해 함수를 생성하여 인자로 함수를 전달
시간이 오래걸리는 작업이 있을 때 이 작업이 완료된 후에 처리해야 할 일을 콜백으로 지정하면 해당 작업이 끝났을 때 미리 등록한 작업을 실행하도록 할 수 있음(처리 위임)
버튼을 클릭하거나 어떠한 정보를 웹페이지에서 갱신하고 싶을 때,
페이지 전체를 다운로드 받아서 화면에 표시하는 것이 일반적
그러나, ≡(메뉴 바) 버튼을 클릭하면, 페이지 전체가 로드되지 않고
웹페이지 않에 포함되어 있지 않은 정보가 화면에 표시
=> 자바스크립트를 통해서 웹브라우저에게 서버와 통신해서 가져온 정보들을 표시함
비동기처리를 자바스크립트에서 에이젝스를 사용한 경우에 쓸 수 있음
Ajax (Asynchronous Javascript and XML)
: 컨텐츠를 클릭하면 웹페이지가 변경되지 않고 서버와 웹브라우저가 내부적으로 통신하는 기법
문서 뿐만 아니라 위와 같은 동작들을 할 수 있는 어플리케이션으로 발전할 수 있도록 기능을 제공한 기술