What is the best way to check for an undefined property in an ejs template?
(I'm using the node.js package by TJ Holowaychuk)
Example:
var tpl = '<% if (foo) { %>foo defined<% } else { %>foo undefined<% } %>'; console.log(ejs.render(tpl, { locals: { bar: "baz" } }));
I'd expect this to render "foo undefined". It does throw an foo undefined error instead.
I know that this is not supposed to be an issue, since this is expected behavior in the tests. Is there an easy way to avoid this?
The only solution I found is using the hasOwnProperty
method.
var tpl = '<% if (hasOwnProperty("foo")) { %>foo defined<% } else { %>foo undefined<% } %>'; console.log(ejs.render(tpl, { locals: { bar: "baz"} }));
This doesn't throw any errors.
Is there a better way to keep the template clean? Or why does it throw this error?
In a JavaScript program, the correct way to check if an object property is undefined is to use the typeof operator. If the value is not defined, typeof returns the 'undefined' string.
The undefined property indicates that a variable has not been assigned a value, or not declared at all.
To see if Node is installed, open the Windows Command Prompt, Powershell or a similar command line tool, and type node -v . This should print the version number so you'll see something like this v0. 10.35 . Test NPM.
Another way to test for a property is to reference it indirectly via the locals
object. Using your example:
var tpl = '<% if(locals.foo){ %>foo defined<% }else{ %>foo undefined<% } %>'; console.log(ejs.render(tpl, { locals: { bar: "baz"} }));
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With