Construct an EJS template to loop through an array users and display each user’s name in a list. Which snippet is correct?

4 phương ánCó giải thích

Các phương án trả lời

Chọn một phương án
Lời giảiChọn phương án để mở

Đáp án đúng: "<%

Lời giải
users.forEach(user => {
  %> <%= user %> <%
}

); %>". EJS phân biệt hai loại thẻ: thẻ <% … %> chỉ chạy mã JavaScript và không in gì, còn thẻ <%= … %> in giá trị của biểu thức sau khi thoát ký tự HTML. Lần theo đoạn mã: dòng đầu mở vòng forEach trên mảng users, dòng giữa in giá trị user ở mỗi lượt lặp, dòng cuối đóng hàm và vòng lặp, nên mỗi tên trong mảng được in một lần (giả sử users chứa tên; nếu là đối tượng thì in user.name). "{

Lời giải
users.map(user => {
  user
}

) }" là cú pháp JSX của React, EJS không hiểu dấu ngoặc nhọn đơn nên in nguyên văn chuỗi đó ra trang. "<%

Lời giải
users.forEach(user => {
  %>{
    user
  }
  <%
}

); %>" có vòng lặp đúng nhưng phần giữa nằm ngoài thẻ EJS, nên mỗi lượt chỉ in ra chữ thô { user } thay vì tên. "<%=

Lời giải
users.forEach(user => {
  %> <%= user %> <%
}

); %>" dùng thẻ in cho dòng mở vòng lặp, EJS sẽ cố biến đoạn chưa đóng đó thành một biểu thức cần in nên khi biên dịch template sẽ báo lỗi cú pháp.

Cùng chương 7

Xuất hiện trong 1 bộ đề