9

私はGoogle Chrome version 28.0.1500.95 mコンソールを使用していくつかの JavaScript をテストしており、それがどのように機能するかをもう少し理解したいと思っています: 以下のコードを見てください:

var obj = {
    a: 99,
    f: function() { }
}

console.log(obj.a)
console.log(obj.z)    
console.log(obj)

o.z = 100;

デモ

これにより、次の結果が出力されます。

99 
undefined 
Object {a: 99, f: function}
a: 99
f: function () { }
z: 100
__proto__: Object

私の質問は、zログの後まで宣言されなかったのに、なぜ結果に表示されるのですか?

これは、コンソールの動作に関するものであり、私が知らない JavaScript の奇妙なスコープ規則ではないと思いますか?

ここで何が起こっているのか誰か教えてください。

4

1 に答える 1

11

コンソールのオブジェクトは、最初は として表示さObjectれ、矢印をクリックすると展開されます。

オブジェクトを展開すると i アイコンが表示され、ホバーすると答えが表示されます。

以下のオブジェクトの状態は、最初の展開時にキャプチャされます

展開後に見えるのは、呼び出した瞬間の状態ではなく、展開時のオブジェクトの状態です。log()

于 2013-08-07T08:42:01.957 に答える