오늘 6번째 checkpoint를 풀다가 결과값이 왜 이렇게 나오는지 아무리봐도 이해가 안가는 문제가 있어 구글링을 해보았다.
일단, 내가 이해 안갔던 문제
function foo () {
var data = 10;
bar(function (players) {
data = players;
});
return data;
}
function bar (callback) {
setTimeout(function () {
callback(20);
}, 500);
}
var result = foo(); // result === 10
return data
를 실행한다return data
를 먼저 실행하고 0.5초 후에 callback(20)을 실행한다.💁♀️ 동기 프로그래밍과 비동기 프로그래밍의 차이였다. 바로 아래에 예시와 함께 동기와 비동기 프로그래밍의 차이를 적어 놓았다.
function foo () {
var data = 10;
bar(function (players) {
data = players;
});
return data;
}
function bar (callback) {
callback(20);
}
var result = foo(); // resultl === 20
function foo () {
var data = 10;
bar(function (players) {
data = players;
});
return data;
}
function bar (callback) {
setTimeout(function () {
callback(20);
}, 500);
}
var result = foo(); // result === 10
💁♀️ 참고 블로그