繁体   English   中英

JavaScript运行时错误:检查是否未定义时,'variable'未定义

[英]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是假的但不是nullundefined - 例如, 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM