ในหน้า EJS github มีตัวอย่างง่ายๆเพียงตัวอย่างเดียว: https://github.com/visionmedia/ejs
ตัวอย่าง
<% if (user) { %>
<h2><%= user.name %></h2>
<% } %>
ดูเหมือนว่ากำลังตรวจสอบการมีอยู่ของตัวแปรที่ชื่อผู้ใช้และหากมีอยู่ให้ทำบางอย่าง ดุใช่มั้ย?
คำถามของฉันคือทำไม Node ถึงโยน ReferenceError ในโลกนี้ถ้าตัวแปรผู้ใช้ไม่มีอยู่ สิ่งนี้ทำให้ตัวอย่างข้างต้นไร้ประโยชน์ วิธีใดที่เหมาะสมในการตรวจสอบการมีอยู่ของตัวแปร ฉันคาดว่าจะใช้กลไก try / catch และคว้า ReferenceError นั้นหรือไม่
ReferenceError: user is not defined
at IncomingMessage.anonymous (eval at <anonymous> (/usr/local/lib/node/.npm/ejs/0.3.1/package/lib/ejs.js:140:12))
at IncomingMessage.<anonymous> (/usr/local/lib/node/.npm/ejs/0.3.1/package/lib/ejs.js:142:15)
at Object.render (/usr/local/lib/node/.npm/ejs/0.3.1/package/lib/ejs.js:177:13)
at ServerResponse.render (/usr/local/lib/node/.npm/express/1.0.7/package/lib/express/view.js:334:22)
at Object.<anonymous> (/Users/me/Dropbox/Projects/myproject/server.js:188:9)
at param (/usr/local/lib/node/.npm/connect/0.5.10/package/lib/connect/middleware/router.js:146:21)
at pass (/usr/local/lib/node/.npm/connect/0.5.10/package/lib/connect/middleware/router.js:162:10)
at /usr/local/lib/node/.npm/connect/0.5.10/package/lib/connect/middleware/router.js:152:27
at Object.restrict (/Users/me/Dropbox/Projects/myproject/server.js:94:5)
at param (/usr/local/lib/node/.npm/connect/0.5.10/package/lib/connect/middleware/router.js:146:21)
ฉันเข้าใจว่าฉันสามารถทำให้ข้อผิดพลาดนี้หายไปได้โดยการเพิ่มตัวแปรโลคัล "ผู้ใช้" ในโค้ดเซิร์ฟเวอร์ของฉัน แต่ประเด็นทั้งหมดที่นี่คือฉันต้องการตรวจสอบการมีอยู่ของตัวแปรดังกล่าวที่รันไทม์โดยใช้ทุกวัน if / else รูปแบบประเภท nullcheck ข้อยกเว้นสำหรับตัวแปรที่ไม่มีอยู่จริงดูเหมือนจะไร้สาระสำหรับฉัน