回想昨日份的學習,撰寫 JS 專案時,應把每一份 JS 檔案視作一個個專案,因為每份 JS 檔案之間彼此是合作關係,如果有其中一份檔案壞掉,那整個專案會不能繼續執行下去。
開始今日份的學習
Values 之於 Program,就像魚之於海水,密不可分。Values 是 program 用來儲存資料最重要的東西。
JS 的 values 有分兩種:Primitive, Object。
String
JS 有三種方式來 delimit (surround, seperate, define) string
一個專案應該統一使用 single quote 或者 double quote 來 delimit string,不要交錯使用,而 back-tick 是有 value 要插入字串時才需使用。
Array
Arrays are a special type of object that's comprised of an ordered and numerically indexed list of data
var names = ['Adele', 'Adam', 'Smith'];
names.length;
// 3
names[0];
// 'Adele'
names[1];
// 'Lewis'
值得關注的是,JS arrays 可以存「任何一種 value type」,就是包含所有上面說的字串、數字、物件等,都可以存進 arrays 裡。( 包含 Functions,Function is a sub-type of object )
Object
Objects are more general: an unordered, keyed collection of any various values. In other words, you access the element by a string location name (aka "key" or "property") rather than by its numeric position (as with arrays).
var me = {
first: "Cheryl",
last: "Chuang",
age: 23
};
console.log(`My name is ${ me.first }.`); // "Cheryl"
console.log(`My name is ${ me["first"] }.`); // "Cheryl"
在上面的範例,me 是一個物件,而 first, last, age 就是在這個物件裡,存放 "Cheryl", "Chuang", 23 這些資訊 (or value collection) location 的名稱,access 這些資訊的方法有兩種,第一種用 dot,另外一個是用 square bracket (如上範例)。
typeof
會回傳該 values 的 built-in type,是 primitive,或者 object
typeof 23; // "number"
typeof "Cheryl"; // "string"
typeof true; // "boolean"
typeof undefined; // "undefined"
typeof null; // "object" -- oops, bug!
typeof { "week": 5 }; // "object"
typeof [1,2,3]; // "object"
typeof function fn(){}; // "function"
null 的 built-in type 是 object,而 function 的 built-in type 是 function。
從一個 value type 轉到另外一個 value type 稱作 'coercion'。
Primitive values 和 object values 在 assign 或者 pass 的時候會有不一樣的行為,也就是常聽到的 “傳值 vs 傳參考 ”, "Values vs References"。
今天份的學習到這邊
[ 參考 ]