4-2-1 호출 시점

var count = 0;
var cbFunc = function () {
		console.log(count);
		if (++count > 4) clearInterval(timer);
};
var timer = setInterval (cbFunc, 300);

//실행 결과
// 0 (0.3초)
// 1 (0.6초)
// 2 (0.9초)
// 3 (1.2초)
// 4 (1.5초)

setInterval에는 함수와 (cbFunc), delay(300) 값이 설정되었다. setInterval 코드로는 cbFunc 함수를 300delay(0.3초)마다 실행한다.

이때, cbFunc의 실행은 setInterval이라는 ‘다른 코드’에 인자로서, setInterval이 스스로 판단에 적절한 시점(0.3초)마다 이 cbFunc함수를 실행했다.

4-2-2 인자

var newArr = [10, 20, 30].map(function (currentValue, index) {
		console.log(currentValue, index);
		return currentValue + 5;
});
console.log(newArr);

newArr 변수를 선언하고 우항의 결과를 할당

우항은 배열[10, 20, 30]에 map 메소드를 호출 중이고 첫 번째 인자로 익명함수 전달

Array.prototype.map(callback[, thisArg])
callback: function(currentValue, index, array)

4-2-3 this

‘콜백 함수도 함수이기 때문에 this를 특정하지 않으면 전역객체가 this가 된다’

Array.prototype.map = function (callback, thisArg){
		var mappedArr = [];
		for (var i = 0; i <this.length; i++) {
				var mappedValue = callback.call(thisArg || window, this[i], i, this);
				mappedArr[i] = mappedValue;
			}
			return mappedArr;
};