










在開發(fā)地圖點(diǎn)聚合功能時(shí),網(wǎng)頁按F12調(diào)出調(diào)試功能,發(fā)現(xiàn)JS錯(cuò)誤提示“Uncaught TypeError: Cannot read properties of null”,如下圖:
雖然程序是正常運(yùn)行的,但作為對(duì)寫代碼的BUG零容忍態(tài)度,是絕不充許出現(xiàn)這種情況,接下來我們?cè)敿?xì)了解一下出現(xiàn)這個(gè)的原因,以及解決方法.
一、什么是Uncaught TypeError: Cannot read properties of null?
在JavaScript中,當(dāng)你試圖訪問一個(gè)null或undefined對(duì)象的屬性時(shí),就會(huì)拋出這個(gè)錯(cuò)誤。例如,如果你有一個(gè)變量x,它的值為null,然后你嘗試訪問x.property,就會(huì)得到"Uncaught TypeError: Cannot read properties of null"的錯(cuò)誤。
二、為什么會(huì)出現(xiàn)這個(gè)錯(cuò)誤?
這個(gè)錯(cuò)誤通常發(fā)生在以下幾種情況:
正在嘗試訪問一個(gè)未定義的變量的屬性。
正在嘗試訪問一個(gè)空對(duì)象的屬性。
正在嘗試訪問一個(gè)不存在的對(duì)象的屬性。
三、如何解決這個(gè)問題?
1. 檢查變量是否已經(jīng)定義
在使用任何變量之前,都應(yīng)該先檢查它是否已經(jīng)定義??梢允褂胻ypeof操作符來檢查一個(gè)變量的類型。
if (typeof x !== 'undefined') { // 訪問x的屬性}
2. 檢查你的變量是否為null或undefined
在訪問對(duì)象的屬性之前,應(yīng)該先檢查該對(duì)象是否為null或undefined。
if (x !== null && x !== undefined) { // 訪問x的屬性}
3. 從ES2020開始,已經(jīng)直接可以忽略錯(cuò)誤提示了,使用方法如下:
const value = x?.property;
在這個(gè)例子中,如果x是null或undefined,那么value將被賦值為undefined,而不會(huì)拋出錯(cuò)誤。
使用1和2點(diǎn)方法的話,還是不能完全解決問題,最好是用第3點(diǎn)的解決方法直接讓系統(tǒng)不提示出錯(cuò)信息咯。
PHP在程序開發(fā)的語言里是非常靈活的一種,靈活有靈活的便利性,亦少了嚴(yán)謹(jǐn)性。