js報未定義 JS的未定義和undefined

2021-10-13 12:13:21 字數 1038 閱讀 6410

background

if (window) else {

console.log('server side rendering')

當我啟專案的時候,不斷的報錯:

window is not defined

原因在js中,有一種錯誤是:referenceerror: "x" is not defined

造成這種錯誤出現的時機是:當你使用了乙個從沒有定義過得變數

那麼問題來了:

q1:從沒有定義過得變數的值那麼這個值的value不就是undefined,那麼如果使用這個變數作為if的條件,為啥不能判斷呢?

對於js而言,一旦解釋到沒有定義的變數,就會直接throw上面的error。

但是定義過但是沒有賦值的變數,也就意味著這個變數的value是undefined,對於js而言不是乙個錯誤,所以if可以使用這個變數作為條件

----> js中沒有定義的變數會throw error而不是將其當做undefined,js只會將沒有賦值的變數當做乙個沒有錯誤的undefined

q2:那麼為啥會經常在**裡看到這波操作props && props.a && props.a.b?

如果寫出這樣的**,一般就是想使用props.a.b但是又害怕props或者props.a不存在導致throw error。但是這樣寫按照之前的理解怎麼能防止error呢?

對於以上的**,我只能說首先,props一定是定義過的或者說一定是存在的,否則這段**會直接throw error

q3: 如果props是乙個空object,說明props.a一定不存在,為啥不報錯呢?

在js中,使用乙個物件不存在的屬性是不會報錯的,不過這個屬性的value是undefined.

----> js對於不存在變數會throw error對於不存在的屬性不會報錯。

q4:那麼我該如何check乙個變數是否被定義過呢?

只有乙個辦法可以check變數是否定義過,使用typeof

if(typeof value === 'undefined'){

alert('value沒有定義過')

js判斷變數是否未定義

一般如果變數通過var宣告,但是並未初始化的時候,變數的值為undefined,而未定義的變數則需要通過 typeof 變數 的形式來判斷,否則會發生錯誤。例如 if myvar01 alert 發生錯誤 該 直接發生異常,因為變數myvar01沒有申明 if undefined typeof my...

名字尚未定義

條件編譯預處理指令允許您指定在什麼條件下會或不會編譯。唯一的條件編譯指令我們將在本節蓋 如果定義了,則和endif 如果定義了預處理指令允許的預處理器檢查值是否已預先 定義。如果是這樣,如果定義了相應的編譯 endif之間的 如果不是的話,被忽略。考慮下面的 片段 123 4567 89 defin...

未定義的索引 php中 php的未定義索引如何解決

通常出現未定義的索引問題是由於陣列沒有這個值造成的,陣列分為關聯陣列和索引陣列,索引陣列是數字下標 關聯陣列是鍵值下標。解決辦法 判斷陣列中是否包含下標鍵值為id的值,如果沒有,則返回錯誤資訊,如何判斷呢,最簡單的方法就是用函式isset來判斷,如isset post id 存在則返回true,反之...