之前學JS時候都是靠著谷狗一路跌跌撞撞的學過來,從來沒有去翻過MDN的文件,導致留了許多技術債給自己。
最近有幸遇到一位前輩並開始從頭學JS,前輩表示學程式不看文件是想作死自己?於是我的第一份功課就是讀完MDN的JS入門文件,在這過程中我也筆記了一些我認為蠻重要的地方,希望藉由這三十天的過程中能加深自己印象並分享給各位。
如果文章中有任何的錯誤或引用沒有附上出處也歡迎各位指教。
其中又可以分成以下兩大類別:
JS中最基本的單位,是一個值,因為不是物件所以沒有任何屬性。
所有基本型別都是不可改變的,在這裡要注意的是別把變數
和型別
搞混了。
我們可以賦予變數一個新的值,不論是字串或是數字型別,但是卻無法更改現有值。
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 導讀、型別與文法