javascript - 在 underscorejs 模板中使用闭包

标签 javascript underscore.js

只是想知道在下划线模板中使用闭包是否有任何值(value)......比如跟踪计数器或其他东西。这是我的意思的一个简单例子:

<% 
 (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 之前声明“length”和“section”这样的变量而不使用闭包会更好吗?或者这有什么关系吗?

谢谢!

最佳答案

我个人并不知道创建在模板之外没有意义的变量有什么优势。

我们通常在优化或使代码更具可读性时创建变量。

(例如

长度仅使用一次。我认为就地使用它更具可读性并且工作量更少。在同行 checkin 审查期间,我因为仅仅为了一些可感知的易读性而创建变量而受到了正确的责备。

部分被多次使用,并且需要额外的逻辑,因此很有意义。

models 除了强制解释器创建一个新指针之外不做任何事情,为什么当它在包含范围内可用时还要传递它呢?

)

如果它使代码更清晰,或者优化某些东西,那么我会说这是值得的。

关于javascript - 在 underscorejs 模板中使用闭包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12434173/

相关文章:

javascript - 每个都打破下划线

javascript - 仅使用下划线将数组转换为对象

java - 在 JSP 中将按钮标题设置为 bean 消息

c# - 从 C# 多次调用 KnokcoutJS ViewModel,无需单击按钮

javascript - 关于 jQuery $.each() 和 bootstrap-select.js refresh() 的性能

javascript - 如何使用下划线的每个函数在嵌套对象中有效地找到一个值?

javascript - 我可以根据对象数组中的键获取每个值吗?

templates - 如何在 CouchDB 中使用 html 模板

javascript - 将属性设置为 addEventListener

javascript - 在 javascript 中打印页面时显示文本框