TIL

0l0l·2021년 4월 11일
0

TIL

목록 보기
8/86

1. JavaScript에서 함수란

'값'으로서의 함수

JavaScript에서는 함수도 객체 이다.
JavaScript의 함수는 다른 언어의 함수와 달리 함수가 이 될 수 있다.

자바스크립트에서 함수는 '____' 가 될 수 있다.

first-class citizen/object/entity/value

  • 변수
  • 매개변수
  • 리턴값
  1. 함수는 객체의 값으로 포함될 수 있다. (함수를 변수에 할당)
    객체의 속성 값으로 담겨진 함수를 메소드(method)라고 한다.
function a(){ // 함수

} // 함수 a는 변수 a에 담겨진 값
a = {
    b:function() {  // 메소드
    
    }
};
  1. 함수는 값이므로 다른 함수의 인자(매개변수) 로 전달될 수 있다.
function cal(func, num){
    return func(num)
}
function plus(num){
    return num + 1
}

alert(cal(plus, 2)); // 함수 plus와 값 2가 함수 cal의 인자로 전달
  1. 함수는 함수의 리턴 값으로도 사용할 수 있다.
function cal(mode){
    var func = {
        'plus' : function(a, b) {
          return a + b
        }
    }
    return func[mode]; // 객체 func의 key값인 'plus'의 value를 리턴
}
alert(cal('plus')(1, 2)); // 즉시 호출하기 위해 괄호 사용
  1. 함수는 배열의 값으로도 사용할 수 있다.
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

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,...)
제대로 정수형으로 정렬하기 위해 함수를 생성하여 인자로 함수를 전달

3. 비동기 처리

시간이 오래걸리는 작업이 있을 때 이 작업이 완료된 후에 처리해야 할 일을 콜백으로 지정하면 해당 작업이 끝났을 때 미리 등록한 작업을 실행하도록 할 수 있음(처리 위임)

버튼을 클릭하거나 어떠한 정보를 웹페이지에서 갱신하고 싶을 때,
페이지 전체를 다운로드 받아서 화면에 표시하는 것이 일반적

그러나, ≡(메뉴 바) 버튼을 클릭하면, 페이지 전체가 로드되지 않고
웹페이지 않에 포함되어 있지 않은 정보가 화면에 표시
=> 자바스크립트를 통해서 웹브라우저에게 서버와 통신해서 가져온 정보들을 표시함

비동기처리를 자바스크립트에서 에이젝스를 사용한 경우에 쓸 수 있음

Ajax (Asynchronous Javascript and XML)
: 컨텐츠를 클릭하면 웹페이지가 변경되지 않고 서버와 웹브라우저가 내부적으로 통신하는 기법
문서 뿐만 아니라 위와 같은 동작들을 할 수 있는 어플리케이션으로 발전할 수 있도록 기능을 제공한 기술

profile
천방지축 빙글빙글

0개의 댓글