簡體   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