私はこのコードを持っています:
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