私はこのコードを持っています:
if(typeof x == 'object')
return "{"+Object.keys(x)+"}";
結果は(Chrome):
Uncaught TypeError: Object.keys called on non-object
ここで何が起こっているのか誰か教えてもらえますか? ところで: Firefox も同じことを行います。
ps: オブジェクトが何かわかりません。Firefox のデバッグに失敗しました。
私はこのコードを持っています:
if(typeof x == 'object')
return "{"+Object.keys(x)+"}";
結果は(Chrome):
Uncaught TypeError: Object.keys called on non-object
ここで何が起こっているのか誰か教えてもらえますか? ところで: Firefox も同じことを行います。
ps: オブジェクトが何かわかりません。Firefox のデバッグに失敗しました。
x
可能性が最も高いですnull
(これはオブジェクトです)。明示的に確認する必要がありますif(typeof x === 'object' && x !== null)
仕様のウォークスルー (ロジックを説明するため):
Object.keys
: http://www.ecma-international.org/ecma-262/5.1/#sec-15.2.3.14読み取り
Type(O) が Object でない場合、TypeError 例外をスローします。
これType
は(http://www.ecma-international.org/ecma-262/5.1/#sec-8.2)Null
用ですnull
typeof
: http://www.ecma-international.org/ecma-262/5.1/#sec-11.4.3
この表typeof null
は、実際に"object"
したがって、実際には例外null
を満たしtypeof x === "object"
、トリガーしますTypeError