1

アンダースコアテンプレートでクロージャーを使用することに価値があるかどうか疑問に思っています...カウンターなどを追跡するとします。ここに私が意味することの簡単な例があります:

<% 
 (function( models ){
  var length = models.length-1,
      section = "";
    _.each( models, function ( item, index ) {
        if (index === 0) {
          section = "top";
        } else if (index === length) {
          section = "bottom";
        } else {
          section = "center";
        }
    %>
  <div class="container">
    <div class="gradiantDiv <%= section %>content">
      <a href="/#customer/<%= item._id %>">
        <address>
          <strong><%= item.name %></strong><br>
          <%= item.addr1 %><br>
          <%= item.city %>, <%= item.state %> <%= item.zip %><br>
          <abbr title="Phone">P:</abbr> <%= item.phone %>
        </address>
      </a>
    </div>

    <div class="gradiantDiv <%= section %>action">
        <i class="icon-chevron-right"></i>
    </div>
  </div>
<% 
    });
})( models );
%>

それとも、_.each の前にクロージャなしで「長さ」や「セクション」などの変数を宣言するほうがよいのでしょうか? またはそれはまったく問題ですか?

ありがとう!

4

1 に答える 1

0

テンプレートの外では意味をなさない変数を作成する利点を個人的には知りません。

通常、コードを最適化または読みやすくするときに変数を作成します。

(例えば

lengthは 1 回だけ使用されます。代わりに使用する方が読みやすく、作業が少ないと思います。ピア チェックイン レビュー中に、読みやすさのために変数を作成したことに対して、当然のことながら叱られました。

セクションは何度も使用され、追加のロジックが必要になるため、非常に理にかなっています。

モデルは、インタープリターに新しいポインターを作成するよう強制する以外は何もしません。それを含むスコープで使用できるのに、なぜそれを渡すのですか?

)

コードが読みやすくなったり、何かが最適化されたりするなら、それだけの価値があると思います。

于 2013-01-10T21:06:52.597 に答える