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함수를 실행했다.
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)
‘콜백 함수도 함수이기 때문에 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;
};