4

私はfor-inループに関して少し混乱しています:

window.hasOwnProperty(undefined) // Returns true

undefined in window // Returns true

しかし、以下は印刷されませUndefined is in window!

for(a in window) {
     if(a === 'undefined')
         console.log('Undefined is in window!');
}

--ループundefinedに表示されないのはなぜですか?forin

4

1 に答える 1

7

列挙可能なプロパティではありません。for ... in最新のJavaScriptエンジンでは、独自のオブジェクトでそれを制御できますが、「ネイティブ」オブジェクトが反復からプロパティを「隠す」ことができるのは、ほとんどの場合(すべてのインタープリターではないかもしれません)です。

MDNObject.defineProperty()で読むことができます。プロパティをオブジェクトリテラルで列挙不可能としてマークするための構文(Harmonyで)があるかどうかはわかりません。

于 2012-08-27T16:41:13.707 に答える