js的null和undefined的區別(三)

問題解決:

先來解決上篇博客郵寄地址出現0的問題


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


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

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


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

同時結合我的某篇博客 Mysql中Null和空在Java和Js中的表現   來看


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的產生

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章