Sur la page github EJS, il y a un et un seul exemple simple: https://github.com/visionmedia/ejs
Exemple
<% if (user) { %>
<h2><%= user.name %></h2>
<% } %>
Cela semble vérifier l'existence d'une variable nommée user, et si elle existe, faites certaines choses. Duh, non?
Ma question est, pourquoi dans le monde Node lancerait-il une ReferenceError si la variable utilisateur n'existe pas? Cela rend l'exemple ci-dessus inutile. Quelle est la manière appropriée de vérifier l'existence d'une variable? Dois-je utiliser un mécanisme try / catch et récupérer cette 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)
Je comprends que je pourrais faire disparaître cette erreur en ajoutant simplement une variable locale "utilisateur" dans mon code serveur, mais le point essentiel ici est que je veux vérifier l'existence de telles variables au moment de l'exécution en utilisant votre tous les jours si / sinon modèle de type nullcheck. Une exception pour une variable qui n'existe pas me semble ridicule.