Study 13.

WorldWannyWeb.·2021년 4월 14일
0

Study

목록 보기
10/35
post-thumbnail

2021-04-14


코드, 면접문제중 아무거나 2문제씩


[Javascript Question]

1. ES6에 대해서 알고 계신가요? 사용하고 있는 ES6 feature들을 설명해 주세요

Answer.
ecma script 6번째 버전으로, let, const, 화살표함수, template literal 등등 새로운 문법이 추가가 되었습니다.
let과 const는 아무데서나 hoisting이 가능했던 var의 문제점을 보완하고자 추가된 문법으로 const를 쓰는것을 권유하는 추세입니다.
화살표함수는 function 키워드 대신 화살표(=>)를 사용해 선언할 수 있습니다.
let pow = function (x) { return x x; };
대신
const pow = x => x
x; 와 같이 functioin키워드나 return을 사용하지 않아도 됩니다.
template literal은 그 전에는 ""를 하나하나씌워서 사용해야했다면, 백틱(`)안에서 문장이나 띄어쓰기, 단어 상관없이 입력하면 그대로 출력이 가능합니다.

[Javascript Question]

2. (function() {

console.log(1);

setTimeout(function(){console.log(2)}, 1000);

setTimeout(function(){console.log(3)}, 0);

console.log(4);

})(); 실행하면 결과가 어떻게 나오나요? 왜 그런가요?

Answer.
결과는 1,4,3,2 순으로 나옵니다. 일단 console.log인 1과 4가 먼저 찍히고, 그다음 2개의 settimeout 중에서 0초가 적혀있는 settimeout에있는 3이 찍히고, 그다음 1초후에 실행되는 settimeout에 있는 2가 찍힙니다. settimeout에 0초가 적혀있어도 console.log와 같이 바로 찍히지 않는 이유는 settimeout이 실행되면 settimeout에 있던 console.log(3)이 백그라운드에 들어가고, 0초후, 테스크큐에 들어가게됩니다. 이때 이벤트루프가 호출스택이 비워질때까지 기다리다가, 테스크큐에 들어가있는 console.log(3)을 호출스택에 넣어줍니다. 그러면 console.log(3)가 실행되고 비워지게 됩니다. 이런과정을 거치기 때문에 console.log(1),(4)가 호출스택에 들어가고, console(3)은 백그라운드를 거쳐 테스크 큐에 들어가있다가 호출스택에 있는 콘솔이 실행되고 비워지고 나서나, 이벤트루프를 통해 호출스택으로 들어가 실행됩니다. 따라서 실행결과는 1,4,3,2 로 나오게 됩니다.

profile
와니완의 월드와이드와니웹🐥

0개의 댓글