JavaScript常見問題:TypeError: null is not an object的詳細內(nèi)容如下:
TypeError: null is not an object
這是在 Safari 中讀取屬性或調(diào)用空對象上的方法時發(fā)生的錯誤。 您可以在 Safari Developer Console 中輕松測試。
有趣的是,在 JavaScript 中, null 和 undefined 是并不同,這就是為什么我們看到的是兩個不同的錯誤信息。
undefined 通常是一個尚未分配的變量,而 null 表示該值為空。 要驗證它們不相等,請嘗試使用嚴格的相等運算符 ===
在我們工作中,這種錯誤可能發(fā)生的一種場景是:如果在加載元素之前嘗試在 JavaScript 中使用元素。 因為 DOM API 對于空白的對象引用返回值為 null。
任何執(zhí)行和處理 DOM 元素的 JS 代碼都應(yīng)該在創(chuàng)建 DOM 元素之后執(zhí)行。
JS 代碼按照 HTML 中的規(guī)定從上到下進行解釋。 所以,如果 DOM 元素之前有一個標簽,腳本標簽內(nèi)的 JS 代碼將在瀏覽器解析 HTML 頁面時執(zhí)行。 如果在加載腳本之前尚未創(chuàng)建 DOM 元素,則會出現(xiàn)此錯誤。
在這個例子中,我們可以通過添加一個 Listener 來解決這個問題,這個事件偵查會在頁面準備好的時候通知我們。 一旦 addEventListener 被觸發(fā), init() 方法就可以使用 DOM 元素。