[英]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.