# JS(2/10) Day 10 五倍紅寶石(第八屆共筆)(2021/7/09) ## 陣列: why? 可以一次宣告大量的變數,節省時間、空間。 在JS裡陣列可儲存不同型態的值,較方便,因每個元素的位元長度都不一樣,效能較低。 在其他語言如C語言只能儲存同型態的值,較不方便,因每個元素的位元長度都一樣,較好處理,效能相對較高。 ```javascript= // 陣列 Array = 藥盒 // 元素 Element = 裡面的藥 var items = ["abc", 7, "c", "d", "e"] // 用索引(index)[]取出元素裡的值 console.log(items[0]); // 用.length方法計算元素的個數 console.log(items[items.length - 1]) // 修改內容物 items[0] = "x" ``` --- ```javascript= // console.log可搭配反引號``來印出變數或是參數的值 var a = 1 console.log(`a的值 = ${a}`) => a的值 = 1 ``` ```javascript= 狀況題1. var a = 1 // a => 1 var b = a // b => 1 a = 2 // a => 1 to 2 console.log(a) => 2 // 因為a被reassign到2 console.log(b) => 1 // 而b一樣在1 狀況題2. var a = ["a", "b", "c"] var b = a a[0] = 2 console.log(a) => ["2", "b", "c"] console.log(b) => ["2", "b", "c"] // a跟b都還是指向同一個藥盒,只是更改裡面的藥而已 狀況題3. let a = 1 let a = 2 // Error,因為let只能被宣告一次 狀況題4. let a = 1 a = 2 // 沒事 狀況題5. const a = 1 a = 2 // Error,因為const是用來宣告常數,不能reassign ``` --- ## for迴圈: why? 可以重複幫你做無聊的事,而且可以設定遞增或遞減。 for (1. ; 2. ; 3.) 1. 起始狀態 2. 滿足條件(條件符合就會一直做,條件不滿足時就會立即停止) 3. 每回合要做的事 ```javascript= // 99乘法表: for (var i = 1; i <= 9 ; i = i + 1) { for (var j = 1; j <= 9; j = j + 1) { // console.log(i + " x " + j + " = " + i * j) console.log(`${i} x ${j} = ${i * j}`) // interpolation } } ``` ```javascript= 狀況題1. let i = 2 let j = i++ console.log(i) => 3 // 先不要管j,把i++獨立出來看,所以 = 3 console.log(j) => 2 // 先把i指給j,再做i++ 狀況題2. let i = 2 let j = ++i console.log(i) => 3 // 先不要管j,把i++獨立出來看,所以 = 3 console.log(j) => 3 // 先做++i,再把i指給j ``` 搭配for迴圈,在if else條件式裡可以用 continue 用來跳過條件式,符合條件的話會直接結束這輪迴圈,跳到下一輪繼續執行。 break 用來直接中斷 for 迴圈。 ```javascript= // 不能印出4跟6 for (var i = 1; i < 10; i++) { if (i == 4 || i == 6) { continue; } console.log(i) } // 印到3就會停止 for (var i = 1; i < 10; i++) { if (i == 4) { break; } console.log(i) } ``` --- ## function函式: why? 最大的優點在於取好名字可以賦予程式碼意義,讓人一看就知道這段code在做甚麼。 另外也有可重複使用、方便等好處。 - function內的值也需要宣告,不然會變成全域變數,到函式外面也可以用 - 所有的 fuction 都有回傳值,沒寫 return 會印出 undefined ,也算是一種回傳值,沒有回傳值 = 甚麼都看不到 - return會做兩件事: - 把控制權轉移到剛剛呼叫函式的地方 - 把值傳回去 JS的return通常要寫,arrow function內只有一行是例外,Ruby的話可以省略 ```javascript= // age = 參數 parameter // 賦予是不是成年人的意義 function isAdult(age) { return (age >= 16) } let age = 26 if (isAdult(age)) { console.log("yes") } else { console.log("no") } ``` ```javascript= // 攝氏轉華氏 function c2f(t) { let f = t * (9 / 5) + 32 // 也可以省略 f ,直接回傳t * (9 / 5) + 32 return f } console.log(`85度 C = ${c2f(85)}度 F`) ``` --- ### 命名: #### JS: - 習慣用小駝峰或大駝峰命名 camelCase、CamelCase - 不可用- - 開頭不能用數字 #### Ruby: - 習慣用蛇式命名 snake_case #### CSS: - 習慣用骨式命名 kebab-case --- ### Xmind: [JavaScript指令](https://www.xmind.net/m/pFvKta) --- ###### tags: `JavaScript`