2015-09-11 12 views
8

なぜそれがなぜ... ...うまく失敗するのですか?例外を投げるのはなぜですか?

​​

が優雅に失敗したということですが、それ

for (let e of null) void e 

TypeErrorを投げますか? これは矛盾しますか?

+2

このディスカッションは関連しているようです:https://esdiscuss.org/topic/will-for-var-a-of-null-throw-an-error –

+0

ありがとう、確かに、それは非常に興味深い読まれた質問に答えます。 –

答えて

6

for...ofのみnull、これらのいずれかはない反復可能オブジェクト(iterable protocolを実装即ちオブジェクト)上で動作します。一方、for...inはすべての値に作用します。

+0

'null instanceof Object'は' false'を返します –

+3

はい、しかし 'typeof null'は' object'です - 明らかにナンセンスです。例外を投げる 'for .. of'の振る舞い(nullは反復不可能であるため)は、' null 'がプロトタイプチェーンを持たない空の 'object'であるという明白な主張よりも格段に優雅です。ちなみに、Doug Crockfordの古典的な本の 'typeof operator 'を持つオブジェクトとしての' null'の不名誉な分類については、「付録A:Aweful Parts」(103ページ)を参照してください。 – caasjj

+0

@ Peter Varga Javascriptのすべてがオブジェクト( 'null'を含む)です。 – hindmost

関連する問題