2017-07-05 3 views
0

次の2つのブロック間に機能的または性能的な違いはありますか?マップインデックスまたはドット表記とのバインディングの相違

<foo ng-if="bar['qux']"> 
<foo ng-if="bar.qux"> 

bar.quxが最初に定義されていないと、違いがありますか?

注:オブジェクトがどのようにプレーンなJavascriptで動作するかを完全に理解しています。これは、Javascriptに関する質問ではなく、AngularJSに存在する違いについてです(解析や他の実装の詳細のため)

+0

おそらくこれがあなたの質問に答えます。ユーザーAlpの回答を参照してください。https://stackoverflow.com/a/17295727/1735789 –

+0

ありがとう@RafaelGadottiBachovas。しかし、私はジェネリックJSの解釈を探しているわけではありません(そうでなければ、私はちょうどドット表記法を使うでしょう)。 –

+0

明らかに、角括弧とドット表記の間にhttps://stackoverflow.com/a/30975165/4488121のように意味のある違いはありませんが、angularjs式パーサーについてはわかりません。しかし機能面からは、ブラケット表記法では、bar ['2foo']のような無効な識別子の文字で指定されたプロパティを使用できます。これは、有効な識別子のみをサポートするドット表記ではできません。 –

答えて

1

私は適切なjsPerfテストケースを作成して、どの表記が解析されるかを確認しました結果は、ドット記法がブラケット記法より約6%速いという結果が得られます。

JsPerfテストケース:https://jsperf.com/test-angularjs-parse-speed

ドット表記は高速ですが、パフォーマンスの差はあまりにも小さいようですので、私はあなたが読んで実用的なものに基づいてどちらを使うかを選択できます。両方とも10,000,000以上のOperations /秒で実行されるため、このような単純な表現ではアプリケーションのパフォーマンス上の問題は発生しません。

0

ドット表記では、初期化後、オブジェクトの関係は定期的な呼び出し以降変更されません。

+0

あなたは何を言おうとしているのか分かりません。 –

+0

私が言っていたことは、ドット表記法を使うとき、DOMの初期化後にブラケット記法と比較して非常に高速にオブジェクトを解析することです。オブジェクトに定期的な変更が発生したとき。 –

関連する問題