[英]JavaScript runtime error: 'variable' is undefined while checking to see if undefined
我有以下用HTML和一些内联JS编写的行:
<% if (x !== undefined || x !== null) { %>
<div> Foo </div>
<% } %>
它产生这个动态函数代码:
if (x !== undefined || x !== null) {...
以及此错误:
0x800a1391 - JavaScript runtime error: 'x' is undefined
任何人都可以解释为什么会这样吗?
这是因为您正在尝试访问从未定义过的变量。
例:
'use strict'; console.log(x);
您可以使用typeof
运算符检查是否已声明变量:
'use strict'; console.log(typeof x === 'undefined');
为了让Javascript比较x
变量的值,它必须查找它; 因为它尚未定义,所以会抛出错误消息。 在运行时甚至尝试将值与undefined
进行比较之前,会发生此错误。 这有点鸡蛋和鸡蛋的问题。
使用typeof x === 'undefined'
代替。
不完全确定<% [some javascript] %>
是什么语法(经典ASP?),但作为替代方案,如果x
存在于您的全局对象上,则嗅探。
由于您已标记此html
,因此您的全局对象应该是window
。 (在节点中,作为示例,全局对象实际上是global
。)
<% if (window.x) { %>
<div> Foo </div>
<% } %>
而且你已经完成了。
您也可以使用我认为您在帖子中打算使用的更详细,但也更精确的代码,这样如果x
是假的但不是null
或undefined
- 例如, 0
或""
- 它仍然会跳过if
。
虽然我很确定你想要一个&&
,而不是||
。 也就是说,按照最初的写法,您的条件将始终评估为真。 如果x
undefined
,那么它的定义不是null
,反之亦然!
这是经过调整的版本......
<% if (window.x !== undefined && window.x !== null) { %>
<div> Foo </div>
<% } %>
变量x未在您的javascript代码中定义。 使用typeof运算符进行检查。
typeof x=="undefined"
如果if返回true,则表示未定义变量x。
试试这个
<% if (!x) { %>
<div> Foo </div>
<% } %>
!x
将为空字符串返回true,NaN,null,undefined。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.