iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 1
0
自我挑戰組

學JS的心路歷程系列 第 1

學JS的心路歷程 Day1 - 資料型別

學JS的心路歷程 Day1

前言

之前學JS時候都是靠著谷狗一路跌跌撞撞的學過來,從來沒有去翻過MDN的文件,導致留了許多技術債給自己。

最近有幸遇到一位前輩並開始從頭學JS,前輩表示學程式不看文件是想作死自己?於是我的第一份功課就是讀完MDN的JS入門文件,在這過程中我也筆記了一些我認為蠻重要的地方,希望藉由這三十天的過程中能加深自己印象並分享給各位。

如果文章中有任何的錯誤或引用沒有附上出處也歡迎各位指教。

資料型別

JavaScript 中,總共有七種型別:

  • String
  • Number
  • Boolean
  • Null
  • Undefined
  • Symbol(於 ECMAScript 6 新定義)
  • Object

其中又可以分成以下兩大類別:

  • 原始型別(Primitive type)
  • 物件型別
    除了 Object 其餘都是 原始型別

原始型別(Primitive type)

JS中最基本的單位,是一個值,因為不是物件所以沒有任何屬性。

不可變異(immutable)

所有基本型別都是不可改變的,在這裡要注意的是別把變數型別搞混了。
我們可以賦予變數一個新的值,不論是字串或是數字型別,但是卻無法更改現有值。

物件型別

JS 中除了 原始型別 以外的一切都是物件

物件這個型別代表了一種複合值(computed value),可以對他設定一些特性(properties),它們每一個都持有了可以是任何型別的值。

這樣說聽請來有點令人不知所措,來看個例子吧:

var obj ={
    a:'hola',
    b:42,
    c:true
}
obj.a;// 'hola'
obj.b;//42
obj.c;//true

辨別型別:

typeof可以判斷上述中除了null的值

var myStr = 'hello world';
typeof myStr;		      // "string"
typeof 'hello world';	     // "string"

var myNum = 42;
typeof myNum; 	            // "number"
typeof 42; 	            // "number"

var myBol = true;
typeof myBol; 	            // "boolean"
typeof true; 	            // "boolean"

var myUndefined;
typeof myUndefined;	    // "undefined"
typeof undefined;         // "undefined"

typeof null; 	// "object"
var myObj = {
    a:'hola',
}
typeof myObj; //"object"

使用typeof(null) === "object"是早期 JS 設計時候的 Bug。

JS會讓這bug存在這麼久(大概快二十年)原因在於很多網站仰賴這個bug如果修正可能會產生更多的bug。

參考:
MDN Primitive
JavaScript 的資料型別與資料結構

你所不知道的JS 導讀、型別與文法


下一篇
學JS的心路歷程 Day2- 宣告
系列文
學JS的心路歷程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
Chris
iT邦新手 4 級 ‧ 2018-10-20 23:02:54

「前輩表示學程式不看文件是想作死自己?」??

前...前輩好/images/emoticon/emoticon06.gif

我要留言

立即登入留言