在开发 Node.js 应用程序时,使用 EJS(Embedded JavaScript)模板引擎可以方便地渲染动态页面。但是,在模板中使用变量时,必须小心处理可能未定义的属性,以避免出现意外错误。
下面介绍一些方法来检查 EJS 模板中变量的未定义属性,并提供代码示例。
方法一:使用 if 语句和 typeof 运算符
使用 if 语句和 typeof 运算符可以检查变量是否已定义。如果未定义,则可以执行相应的操作,例如输出默认值或跳过该属性。
<% if (typeof user !== 'undefined' && typeof user.name !== 'undefined') { %> <h1>Welcome <%= user.name %>!</h1> <% } else { %> <h1>Welcome, guest!</h1> <% } %>
在上面的示例中,首先检查 user
变量是否已定义,如果已定义,则进一步检查 user.name
属性是否已定义。如果两个条件都满足,则输出欢迎消息,并显示用户名。否则,输出默认的欢迎消息。
方法二:使用短路运算符
使用短路运算符可以更简洁地检查变量是否已定义。当变量未定义时,短路运算符会返回其前一个操作数,而不会执行后面的操作。
<h1>Welcome <%= user && user.name || 'guest' %>!</h1>
在上面的示例中,首先检查 user
变量是否已定义。如果已定义,则进一步检查 user.name
属性是否已定义。如果两个条件都满足,则输出欢迎消息,并显示用户名。否则,输出默认的欢迎消息。
方法三:使用 try...catch 语句
使用 try...catch 语句可以捕获未定义属性的错误,并执行相应的操作。在这种情况下,建议只检查可能会导致错误的属性,而不是整个变量。
<% try { %> <h1>Welcome <%= user.name %>!</h1> <% } catch (e) { %> <h1>Welcome, guest!</h1> <% } %>
在上面的示例中,尝试访问 user.name
属性。如果该属性未定义,则 catch 块将捕获错误,并输出默认的欢迎消息。
通过上述方法,您可以更加安全地处理 EJS 模板中的变量,并避免出现意外错误。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/30424