なぜそれがなぜ... ...うまく失敗するのですか?例外を投げるのはなぜですか?
が優雅に失敗したということですが、それ
for (let e of null) void e
はTypeError
を投げますか? これは矛盾しますか?
なぜそれがなぜ... ...うまく失敗するのですか?例外を投げるのはなぜですか?
が優雅に失敗したということですが、それ
for (let e of null) void e
はTypeError
を投げますか? これは矛盾しますか?
for...of
のみnull
、これらのいずれかはない反復可能オブジェクト(iterable protocolを実装即ちオブジェクト)上で動作します。一方、for...in
はすべての値に作用します。
'null instanceof Object'は' false'を返します –
はい、しかし 'typeof null'は' object'です - 明らかにナンセンスです。例外を投げる 'for .. of'の振る舞い(nullは反復不可能であるため)は、' null 'がプロトタイプチェーンを持たない空の 'object'であるという明白な主張よりも格段に優雅です。ちなみに、Doug Crockfordの古典的な本の 'typeof operator 'を持つオブジェクトとしての' null'の不名誉な分類については、「付録A:Aweful Parts」(103ページ)を参照してください。 – caasjj
@ Peter Varga Javascriptのすべてがオブジェクト( 'null'を含む)です。 – hindmost
このディスカッションは関連しているようです:https://esdiscuss.org/topic/will-for-var-a-of-null-throw-an-error –
ありがとう、確かに、それは非常に興味深い読まれた質問に答えます。 –