Di halaman github EJS, hanya ada satu contoh sederhana: https://github.com/visionmedia/ejs
Contoh
<% if (user) { %>
<h2><%= user.name %></h2>
<% } %>
Ini sepertinya memeriksa keberadaan variabel bernama pengguna, dan jika ada, lakukan beberapa hal. Duh kan?
Pertanyaan saya adalah, mengapa di dunia ini Node akan melempar ReferenceError jika variabel pengguna tidak ada? Ini membuat contoh di atas tidak berguna. Apa cara yang tepat untuk memeriksa keberadaan variabel? Apakah saya diharapkan untuk menggunakan mekanisme coba / tangkap dan mengambil ReferenceError itu?
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)
Saya memahami bahwa saya dapat membuat kesalahan ini hilang hanya dengan menambahkan variabel lokal "pengguna" di kode server saya, tetapi intinya di sini adalah bahwa saya ingin memeriksa keberadaan variabel tersebut pada waktu proses menggunakan if / else Anda setiap hari pola tipe nullcheck. Pengecualian untuk variabel yang tidak ada tampaknya konyol bagi saya.