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