Re:JavaScriptに自信があるならこのクイズを受けてみるといい!

http://www.ideaxidea.com/archives/2010/02/js_quiz.html

やってみました。結果は恥ずかしくて公開出来ない。。
JavaScriptが一番得意です!」って言い続けてたのに。。
悔し紛れに解説をしてみようと思います。

第1問

(function(){
return typeof arguments;
})();

  1. “object”
  2. “array”
  3. “arguments”
  4. “undefined”
回答

1."object"が正解

解説

number,string,boolean,undefinedのプリミティブ型と、function以外全てobjectの派生型として扱われる。
typeof nullが"object"になるのは知らなかった。

function type_of_what(x){ return typeof x;};
type_of_what(1) // "number"
type_of_what("abc") // "string"
type_of_what(true) // "boolean"
type_of_what(undefined) // "undefined"
type_of_what(function(){}) // "function"
type_of_what([1,2,3]) // "object"
type_of_what({foo:"bar"}) // "object"
type_of_what(null) // "object"

ちなみに、argumentsは配列ではなく"Array-like Object"です。
lengthプロパティは持っていますが、push、popなどのArray特有のメソッドは持っていません。

なんとなくわかったつもりになっていたけど、ちゃんと言葉にして説明って出来ないものですね。
明日は第2問の解説にチャレンジします。