본문 바로가기

Web/Javascript

함수

호이스팅


끌어올린다.

변수 '선언'

함수 '선언'


- 호이스팅 전

console.log( a() );
console.log( b() );
console.log( c() );

function a() { // 함수 선언문
  return 'a';
}
var b = function bb() { // 기명 함수표현식
  return 'bb';
}
var c = function() { // (익명) 함수표현식
  return 'c';
}

- 호이스팅 후

function a() {
  return 'a';
}
var b;
var c;

console.log( a() );
console.log( b() );
console.log( c() );

b = function bb() {
  return 'bb';
}
c = function() {
  return 'c';
}




스코프와 실행컨텍스트


스코프 : 유효범위(변수)

실행 컨텍스트 : 실행되는 코드덩어리(추상적 개념)


스코프는 함수가 정의될 때 결정되고

실행 컨텍스트는 함수가 실행될 때 생성된다.


실행 컨텍스트에는 호이스팅, this 바인딩 등의 정보가 담긴다.




메소드


함수인데 앞에 . 이 붙어있으면 메소드라고 생각하면 된다.


var obj = {
  a: 1,
  b: function bb() {
    console.log(this);
  }
}

obj.b(); // 메소드




콜백함수


대상에게 제어권을 넘겨준다(맡긴다).


다른 함수 A의 매개변수로 콜백함수 B를 전달하면,

A가 B의 제어권을 갖게 된다.


특별한 요청(bind)이 없는 한

A에 미리정해진 방식에 따라 B를 호출한다.

// setInterval( callback, milliseconds );

setInterval(function () {
  console.log('1초마다 실행될 겁니다.');
}, 1000);

// arr.forEach( callback[, thisArg])
var arr = [1, 2, 3, 4, 5];
arr.forEach(function(index, value) {
  console.log(index, value);
});

// addEventListener(type, callback[, options])
document.getElementById('a').addEventListener('click', function(x) {
  console.log(this, x);
});


'Web > Javascript' 카테고리의 다른 글

CALL, APPLY, BIND 메소드  (0) 2018.01.11
THIS  (0) 2018.01.11
DATA TYPES  (0) 2018.01.11
Object.assign()  (0) 2017.03.23
형 변환  (0) 2017.03.21