JavaScript での For-In ループとオブジェクト プロパティの順序
「for...in」ループを使用してオブジェクトのプロパティを反復処理する場合、走査の順序が元の宣言の順序と一致するかどうか疑問に思うのは自然なことです。
によるとJohn Resig 氏によると、主要なブラウザでの JavaScript の過去の実装では、このループがプロパティ定義の順序で実行されていました。ただし、Chrome には、数値以外のプロパティ名が最初の数値プロパティよりも前に順番に取得されるという例外がありました。
現在、この動作はブラウザによって異なります。最新のブラウザは定義順序に従いますが、Chrome と Opera は例外であり、数値以外のプロパティをシャッフルし続けます。これは、「for...in」ループと「Object.keys」メソッドの両方に適用されます。
次の例でこれを示します。
var obj = { "first": "first", "2": "2", "34": "34", "1": "1", "second": "second" }; for (var i in obj) { console.log(i); }
Chrome と Opera の出力:
"1" "2" "34" "first" "second"
他のブラウザでの出力:
"first" "second" "1" "2" "34"
この変動にもかかわらず、ブラウザの実装は変更される可能性があり、順序の保持に依存することには危険が伴う可能性があることに注意することが重要です。
したがって、アプリケーションでプロパティの順序が重要である場合は、配列を使用することが賢明です。予測可能で安定した注文メカニズム。
以上がJavaScript の「for...in」ループ プロパティの順序はブラウザ間で一貫していますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。