簡體   English   中英

JavaScript變量定義混亂

[英]JavaScript variable definition confusion

我有2個JavaScript代碼。 他們兩個都檢查變量是否等於null或變量類型是否未定義。 但是在一種情況下,我會出錯,而在其他情況下,我沒有任何錯誤。

代碼1:

if (NS1 === null || typeof (NS1) === 'undefined') {
    ...  }

代碼2:

 if (window.NS1 === null || typeof (window.NS1) === 'undefined') {
  ...   }

對於代碼1,我得到了錯誤

未定義NS1

而對於代碼2我沒有任何錯誤。 我不明白可能是什么原因,因為我沒有定義NS1或window.NS1。 所以我應該在兩種情況下都出錯。

所以我應該在兩種情況下都出錯。

嘗試訪問1未聲明的變量會導致引用錯誤。 但是,像在第二個示例中一樣,嘗試訪問不存在的屬性只會返回undefined ,而不會引發錯誤:

> console.log({}.foo);
undefined

這就是JavaScript的工作方式。


1:有人可能會說您在執行typeof NS1時也正在訪問變量。 沒錯, typeof很特殊。 即使未聲明變量,它也將返回"undefined"

這是因為null === undefined // --> false

NS1 === null表示未定義變量NS1 ,因此會引發異常。

但是window.NS1 === null將評估為false ,因為window.NS1是未定義的。 而且undefined不等於null

NS1作為未聲明的變量->異常
window.NS1作為未聲明的屬性->未定義

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM