1. 程式人生 > >js的null和undefined的區別(三)

js的null和undefined的區別(三)

問題解決:

先來解決上篇部落格郵寄地址出現0的問題


原因:可以看到null+null=0


郵寄地址拼接的省市縣和詳細地址,沒有做判空處理,出現了null+null的情況。

var address = data.invoiceProvince+data.invoiceCity+data.invoiceCounty+data.invoiceDetailaddress;

這個問題解決了,但是下個問題又來了,為什麼省市縣的取值出現了null,什麼情況下是null

js獲取java資料為null和undefined情況:


mysql中的空白值和null

Mysql

                                             Java

                                JS

                                                     備註

空白值

                                               ‘’

                 ‘’

不區分接收資料的型別,永遠都存在對應的屬性,只要sql查詢了這個欄位

Null

Map接受,map中沒有對應欄位的key-value

從map獲取對應的值為undefined

實體物件接受,對應的屬性值是null

從實體物件獲取具體為null還是undefined不確定?(疑惑1)

 實體物件接收,但是中間經過map處理,map中仍然存在對應的屬性值

 從map的物件獲取具體為null還是undefined不確定?(疑惑2)

 sql語句不查詢這個欄位的時,採用實體物件接收,對應屬性值不知道是否還存在

 從實體物件獲取具體為null還是undefined不確定?(疑惑3)

    sql語句不查詢這個欄位,採用實體接收

java程式碼訪問mysql資料庫。
mysql中的預設的null值,在實體中返回時是以 null 返回的。在map中不存在這個欄位。
這一步檢驗有時候會在java程式碼檢驗返回值是否為空時候用到。可能會報java.lang.NullPointerException

null和undefined比較:

第一種:出現

undefined表示"缺少值",就是此處應該有一個值,但是還沒有定義。典型用法:

①物件沒有賦值的屬性,該屬性的值為undefined。

變數被聲明瞭,但沒有賦值時,就等於undefined

③呼叫函式時,應該提供的引數沒有提供,該引數等於undefined

④函式沒有返回值時,預設返回undefined。

第一種情況:在我們-s獲取java資料為nullundefined情況,已經說明。

第二種情況:


第三種情況:
function f(x){console.log(x)}
f() // undefined
第四種情況:
var x = f();
x // undefined

第二種:轉換為數字的時候

null是一個表示"無"的物件,轉為數值時為0;null和任何數字相加(包括null)都等於0。
undefined是一個表示"無"的原始值,NaN(Nota Number)。undefiend和任何數字相加(包括undefined和null)都是NaN



區別總結:

①undefined是定義了但是沒有賦值或者物件屬性沒有定義,null是賦值的時候就是沒有值。
②undefiend和任何數字相加是NaN,null和任何數字相加是0;

下一篇部落格:NaN的產生