「沒有值」與「空值」的差別在哪裡?(筆記)

  • 6780
  • 0
  • ES6
  • 2018-08-27

「沒有值」與「空值」

想請問一下
「沒有值」與「空值」的差別在哪裡?
這是我在判斷像是input標籤有沒有輸入內容 遇到的問題
我用""(空字串)判斷才通過 但null卻不行
由於誤用了太多次 
我想把這個最基本的問題弄清楚

 
空字串 : "什麼也沒有" 
NULL : "什麼也不是"

---->空字串:本來裝水的容器今天沒裝水。
---->null :一個是連裝水的容器都沒有。

要取一個欄位的值。如果這個欄位存在,但是沒有輸入任何內容,那就是取到空字串;
如果欄位根本不存在,那就是null。大概就是這樣的概念。

空字串(Empty空值):空的杯子,
null(沒有值):沒有杯子
Undefined : 連是不是杯子都不知道

https://dorey.github.io/JavaScript-Equality-Table/

https://github.com/denysdovhan/wtfjs#-is-truthy-but-not-true

https://www.youtube.com/watch?v=O7rZJdtG10g
JavaScript: Truthy? Falsy?(https://amobiz.github.io/2015/09/28/javascript-truthy-falsy/)

JavaScript 的資料型別與資料結構
鐵人賽:動態型別的 JavaScript

你想像自己是電腦,空字串就是記憶體中一塊長度為零的記憶空間,也就是定址開頭與結尾都一樣
假設String A =""的定址空間是1F34:0A12~1F34:0A12,定址開頭與結尾都一樣長度為零。
而null就是根本沒有定址記憶體完全沒有被使用,
假設String A =null,來解釋就是a變數沒有指向任何記憶體,根本沒有宣告。

空字串:一張白紙上面什麼都沒寫
null:連白紙都沒有

小紅帽生下來還沒看過狼
let wolf = undefined; ---> 阿嬤跟它說有個東西叫做狼,很危險。但小紅帽還是不知道它長的怎麼樣…每天向門外看說天上飛的那隻是狼嗎?地上爬的那條的是嗎?
let wolf = null; ---> 有一天,小木偶到她家跟他說門外有狼,她打開什麼都沒有 >> 很確定門外嘸狼。
let wolf = '灰太狼'; ---> 叫灰太狼的狼
let wolf = ''; ---> 知道牠是狼,但不知道它是什麼狼。正確一點來說,空字串 是指已經確定它是字串了,只不過是沒有字的字串。
let wolf = new 人('也是 ㄌㄤˊ,只不過是「色狼」'); ---> 披著人皮的狼(變數可以裝不同的東西)