JavaScript运行时错误:';变量';在检查是否未定义时未定义
我用HTML和一些内联JS编写了以下几行代码:JavaScript运行时错误:';变量';在检查是否未定义时未定义,javascript,html,inline,Javascript,Html,Inline,我用HTML和一些内联JS编写了以下几行代码: <% if (x !== undefined || x !== null) { %> <div> Foo </div> <% } %> 以及这个错误: 0x800a1391 - JavaScript runtime error: 'x' is undefined 有人能解释为什么会发生这种情况吗?这是因为您试图访问一个从未定义过的变量 例如: “严格使用”; 控制台日志(x)javasc
<% if (x !== undefined || x !== null) { %>
<div> Foo </div>
<% } %>
以及这个错误:
0x800a1391 - JavaScript runtime error: 'x' is undefined
有人能解释为什么会发生这种情况吗?这是因为您试图访问一个从未定义过的变量 例如:
“严格使用”;
控制台日志(x)代码>javascript代码中未定义变量x。用typeof操作员进行检查
typeof x=="undefined"
如果if返回true,则未定义变量x。为了让Javascript比较x
变量的值,它必须查找它;由于它尚未定义,因此会抛出一条错误消息。此错误发生在运行时甚至尝试将值与未定义的值进行比较之前。这有点鸡和蛋的问题
请改用typeof x===“undefined”
。试试这个
<% if (!x) { %>
<div> Foo </div>
<% } %>
福
!对于空字符串NaN、null、未定义,x
将返回true。不完全确定
是什么语法(经典ASP?),但作为替代方法,如果全局对象上存在x
,则进行嗅探
因为您已经标记了这个html
,所以您的全局对象应该是window
。(例如,在节点中,全局对象实际上是global
)
改为选中typeof x==“undefined”
。发生这种情况是因为没有定义…x
。JS很少有这样的层次,但是错误消息并不总是清晰的,因为区别var x
声明了一个变量,它的值是undefined
。所以,你可以使用它,因为可以说“它们存在”。未声明的变量往往会抛出错误,例如您看到的错误,因为您试图访问不存在的东西(未声明)。虽然x=5
将在非严格模式下隐式设置窗口.x
。但这仍然不起作用,如果未声明x
,则在查找时会抛出错误。
<% if (!x) { %>
<div> Foo </div>
<% } %>
<% if (window.x) { %>
<div> Foo </div>
<% } %>
<% if (window.x !== undefined && window.x !== null) { %>
<div> Foo </div>
<% } %>