javascript - JS で書かれたテストの問題ですが、よくわかりません。説明してください。
phpcn_u1582
phpcn_u1582 2017-05-19 10:40:23
0
4
482
リーリー

結果は Z ですが、少しわかりにくいです。コンソールの出力例は次のとおりです:

phpcn_u1582
phpcn_u1582

全員に返信(4)
滿天的星座

その理由は実はとても簡単で、問題は for ループにあります

リーリー

ここでの最後のキー === 'z'、および他の属性の結果は params[key] を返します。これは params['z'] です

いいねを押す +0
给我你的怀抱

これはオブジェクトのコピー関数です。元のオブジェクトとの唯一の違いは、クロージャのため、コピーされたオブジェクト a の属性がすべて z であることです。 = {
リーリー

}

いいねを押す +0
伊谢尔伦

クロージャを作成するか、letを使用します

リーリー

またはvarキーをletキーに変更します

いいねを押す +0
阿神

リーリー

こちら、Object.defineProperty(this, key, {})这里的key是立即读取使用的,所以是预期行为x,y,z

リーリー

この関数は 将来のある時点で実行されるので、実行時に最後の key值,即z を読み取ります。これは古典的なクロージャ問題と同じです。

リーリー

印刷されるものはすべて 5 です。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート