嵌入式 JavaScript for 循环解释

Embedded JavaScript for-loop explanation

我正在尝试在 EJS 中使用 for 循环来呈现我的 table,但我一直收到此错误,提示它找不到我的变量:

TypeError: /Users/martin/Documents/Atom-files/Nye_eksempler/testApp/public/views/billing.html:41
   39| <% for (var i = 0; services.length; i++) { %>
   40| <tr>
>> 41| <td><%= services[i].name %></td>
   42| <td class="alignright"><%= services[i].price %></td>
   43| </tr>
   44| <% } %>

Cannot read property 'name' of undefined

有问题的代码是这样的:

<% for (var i = 0; services.length; i++) { %>
    <tr>
    <td><%= services[i].name %></td>
    <td class="alignright"><%= services[i].price %></td>
    </tr>
    <% } %>

视图的渲染方式是这样的:

app.get('/', function(req, res) {

  res.render('billing.html', {
    total_payment: '',
    name: 'martin scorsese',
    date: '25. may',
    billing_id: '#213123',
    services: [{name: 'flight', price: ''}, {name: 'car', price: ''}]

  } );
});

为什么这会给我一个错误?我的其他变量加载没有问题,只是 for 循环和 'services'-变量导致了问题。

你在定义 for 循环时有一个语法错误:你忘记定义迭代的上限。在您的情况下,索引超出范围。

<% for (var i = 0; i < services.length; i++) { %>
   <tr>
      <td><%= services[i].name %></td>
      <td class="alignright"><%= services[i].price %></td>
   </tr>
<% } %>