我遇到了 Underscore.js 模板和 Internet Explorer 的问题。这是导致麻烦的模板的一部分:
<p>
<% if ( typeof description !== 'undefined' ) { %>
<%- description %>
<% } else { %>
No description
<% } %>
</p>
当变量description
未定义时(这意味着我根本没有将它提供给模板,变量不存在),这在 Safari、Firefox、Chrome 中工作得很好。
但是,Internet Explorer 无法正常工作。而不是显示No description
IE8和IE9显示[object HTMLMetaElement]
,而IE7显示[object]
。
检查 Safari、Firefox、Chrome 中的typeof description
返回结果undefined
,但显然 Internet Explorerobject
会返回。
我已经尝试过 Underscore.js 的_.isUndefined(value)
功能,但是当变量不存在时,该功能不起作用。
有谁知道这个问题的解决方法?(请注意,我无法提供没有值的变量 - 它要么存在,要么不存在)
更新我在 Underscore.js Github 问题之一中找到了解决方法https://github.com/documentcloud/underscore/issues/237#issuecomment-1781951
有人可以解释为什么 IE 的行为不同,以及为什么解决方法实际上有效吗?
更新 2 @John-DavidDalton 在下面的评论中提供了另一个更好的解决方法(直接链接到它似乎不起作用)