kangax씨가 재미있는 자바스크립트 문법 퀴즈 14문제를 냈습니다. 다음 예제 코드를 잘 읽고 보기에서 정답을 선택하세요. 문제를 모두 풀었다면 본문 하단에 있는 "채점하기" 버튼을 클릭하여 즉시 풀이 결과를 확인할 수 있습니다. 조심하세요! 다양한 함정들이 도사리고 있으니까요.
문제 코드 실행 환경 :
- ECMAScript 3번째 에디션으로 간주합니다.(5번째 에디션 아님)
- Implementation quirks do not count (오직 표준 동작에 의한 것에 한합니다.)
- 모든 코드는 전역에서 실행됩니다.(
eval
되지 않으며 함수의 일부분일 수 없습니다.) - 어떠한 변수도 미리 선언되어 있지 않습니다.(그리고 문제들은 서로 연관성을 가지고 있지 않습니다.)
- 답변은 코드가 최종 실행결과를 리턴하는 값이거나 가장 마지막 라인에 할당된 변수의 값입니다.
- 보기의 “Error”는 코드가 실행되는 과정에서 발행하는 런타임 오류를 말합니다.
문제 #1)
(function(){
return typeof arguments;
})();
문제 #2)
var f = function g(){ return 23; };
typeof g();
문제 #3)
(function(x){
delete x;
return x;
})(1);
문제 #4)
var y = 1, x = y = typeof x;
x;
문제 #5)
(function f(f){
return typeof f();
})(function(){ return 1; });
문제 #6)
var foo = {
bar: function() { return this.baz; },
baz: 1
};
(function(){
return typeof arguments[0]();
})(foo.bar);
문제 #7)
var foo = {
bar: function(){ return this.baz; },
baz: 1
}
typeof (f = foo.bar)();
문제 #8)
var f = (function f(){ return "1"; }, function g(){ return 2; })();
typeof f;
문제 #9)
var x = 1;
if (function f(){}) {
x += typeof f;
}
x;
문제 #10)
var x = [typeof x, typeof y][1];
typeof typeof x;
문제 #11)
(function(foo){
return typeof foo.bar;
})({ foo: { bar: 1 } });
문제 #12)
(function f(){
function f(){ return 1; }
return f();
function f(){ return 2; }
})();
문제 #13)
function f(){ return f; }
new f() instanceof f;
문제 #14)
with (function(x, undefined){}) length;
덧. 친절하게도 andrwj님은 문제들을 해석해 주셨네요.
Comments
Got something to add? You can just leave a comment.
저는 3, 8, 10, 11, 14번 틀리고 ㅜ_ㅜ 9점나왔습니다. 이런 난감할때가 -_-;;
11번은 문제 대충보다 날려서 좀 억울한감이... (-.-)
특히 14번. 함수객체의 length가 arguments로 할당된 수를 가르킨다는건 이번에 알게되었네요!
reply edit
저도 arguments의 갯수를 저런 식으로 뽑으리라곤 상상도 못했습니다.
reply edit
^_^ 간만에 잼난거였슴. 해설도 달아봤으(http://ajaxian.kr/archives/193).
reply edit
오~ 몇점이세요?
reply edit
캑! 만점!
reply edit
저도 6개 맞췄네요. 언제나 조용히 읽고 가다가 firejune님이 6개 라는 말에 용기를 얻어 이렇게 한글자 올립니다. ㅎㅎ. 언제나 잘 정리된 글 감사히 읽고 있습니다.
reply edit
구독해 주셔서 감사합니다~ 이 문제들은 넌센스 퀴즈 같아요.
reply edit
저도 7개로 반타한거 같네요..정말 함정이 많은거같아요..
reply edit
와!! 부러워요;
reply edit
이거 상당히 재미있네요. +_+
저는 9번, 11번 틀렸네요 ㅠ.ㅠ 9번이야 몰라서 틀린거니 아쉬운 게 없는데, 11번은 조금만 침착했으면 foo.bar 가 아니라 foo.foo.bar 일거라고 생각을 했을텐데... ;; 아깝;;
reply edit
헉! 12점씩이나! 저는 조낸 공부해야겠습니다. ㅠ.ㅠ
reply edit
2점은 좀 심하잖아요! jhl?
reply edit
자스문법은 자신있는데.. ECMAScript 3에디션 기준이라고해서 자신 없었는데.. 3개틀렸네요.
12번문제 같은 코드는 오바이트할거 같음..-_-(아는 거였는데..코드가 보기 싫더군요..)
2번과 9번은 IE6 기준에서는 맞혔습니다. 파이어폭스에서도 9번 답이 1undefined 이거 안나오네요.
reply edit
옷! 대단하십니다!
reply edit
9번문제 인터넷 익스폴로러만 그러네요..
파이어폭스 최신 업데이트된 버전에서는 1undefined 제대로 나오네요..
모질라 재단에서 이 댓글보고 업데이트한게 분명합니다.ㅋ
reply edit
Your Reaction Time!