Quelle est la bonne façon de vérifier l'existence de la variable dans une EJS modèle (à l'aide de ExpressJS)?

Sur l'EJS github page, il y en a un, et seulement un exemple simple:
https://github.com/visionmedia/ejs

Exemple

<% if (user) { %>
    <h2><%= user.name %></h2>
<% } %>

Ce qui semble être de vérifier l'existence d'une variable d'utilisateur nommé, et si elle existe, de faire quelques trucs. Bah, non?

Ma question est, pourquoi dans le monde serait Nœud de jeter un ReferenceError si la variable n'existe pas? Cela rend l'exemple ci-dessus inutiles. Quel est le moyen le plus approprié pour vérifier l'existence d'une variable? Suis-je censé utiliser un try/catch mécanisme et de saisir que 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 j'ai pu faire cette erreur d'aller loin en ajoutant simplement un "utilisateur" variable locale dans mon code serveur, mais le point ici est que je veux vérifier l'existence de ces variables lors de l'exécution à l'aide de votre chaque jour si/d'autre nullcheck type de modèle. Une exception pour une variable qui n'existe pas semble ridicule pour moi.

InformationsquelleAutor Aashay Desai | 2011-03-21