Lichen5221 / Report-Daily

記錄每日上課內容與作業。
0 stars 0 forks source link

2021-04-27 #8

Open Lichen5221 opened 3 years ago

Lichen5221 commented 3 years ago

宣告函式的不同方式

function test( ) {

}

var test = function ( ) {

}

函式參數可放函式,示範如下:

function trans(arr, transF) {
  var result = [ ]
  for(var i = 0; 1 < arr.length; i++) { 
    result.push(transF(arr[i]))
  }
  return result
}

function triple(x) {
  return x*3
}

console.log(trans([1,2,3], triple)

匿名函式(函式不具名稱),示範如下:

function trans(arr, transF) {
  var result = [ ]
  for(var i = 0; 1 < arr.length; i++) { 
    result.push(transF(arr[i]))
  }
  return result
}

console.log(
  trans([1,2,3], function(x) {
      return x*3
  })
)

參數( parameter )& 引數( argument )

function 函式名稱(參數)。

實際使用時,放入參數位置的值叫做引數。

function add(a, b) { //a 和 b 為參數。
  console.log(arguments) //顯示引數,可加中括弧。
  return a+b
}
console.log(add(2, 5)) //2 和 5 為引數。

argument 為物件非陣列。

使用 function 的注意事項

我只有聽一聽而已。

function 內的改變不會影響 function 內的數值。

會從外面複製回去 function 內,因為是複製所以記憶體位置不同。

使用物件、陣列的話,就會更改到外面的值。詳情參考物件、陣列解說。

return

不需要知道結果的可以不用 return ,需要知道結果的使用 return 。

不會執行放在 return 下行的程式語言,放在 return 前才會執行。

Lichen5221 commented 3 years ago

內建函式

可用可不用,因為自己也可以寫得出來。

使用內建函式可以更簡潔。

相關函式請 參考

數字相關函式

Number( ) 轉乘數字 paresInt( , )需要在逗號後面放進位方式,整數。 parseFloat( ), 用來顯示小數。 parseFloat( ).toFixed( ) 修正小數點顯示幾位,如果沒輸入會把所有小數去掉。 Number.MAX_VALUE 可以儲存最大的數字。 Math.PI 此處為 pi 的值 3.14.... ,在 Math 語法點後面如果為大寫,表示常數。 Math.ceil( ) 無條件進位 Math.floor( ) 無條件捨去 Math.round( ) 四捨五入 Math.sqrt( ) 開根號 Math.pow( , ) 次方 Math.random( ) 0 - 1 隨機取數,讓他加減乘除多少可以擴大範圍。

字串相關函式

toUpperCase( ) 將字母變大 toLowerCase( ) 將字母變小 charCodeAt( ) 印出字母的 ACSII Code fromCharCode( ) 轉換寫入數據變成對應字母或符號

var a = 'A'
var aCode = a.charCodeAt(2) //括弧內的數字代表你要取變數名稱中的第幾個字(從零開始算)
console.log(aCode)

變數名稱.indexOf( ) 尋找是否有 ( ) 內的東西。小於零代表不存在,存在的話會出現其位置的數字。 replace( ) 取代字串

var str = 'hey hello'.replace('hey', 'yo') //只換第一個
console.log(str)

var str = 'hey hello'.replace(/y/g, 'o') //全部的 y 都換掉
console.log(str)

split( ) 把字母切分成陣列。括弧內代表要以什麼來分割(逗號、空白等)

var str = 'hey hello world'
console.log(str.spilt( ))

trim( ) 去掉所有的空格(不論前後中間)

陣列相關函式

陣列名稱.join( ) 將括弧內的東西加進去陣列空隙裡,頭尾不會有,變成一字串(重點注意)。 陣列名稱.map( ) 可放入函式,將陣列內容物放入函式再回傳陣列,且可以無限延伸。

var arr = [1, 2, 3]
console.log(
  arr
  .map(function(x) {
    return x * -1
  })
  .map(function(x) {
    return x * 2
  })
)

陣列名稱.filter( ) 會過濾東西,餵條件進去只留下符合條件的元素。

var arr = [1, 2, 3]
console.log(
  arr
  .map(function(x) {
    return x * -1
  })
  .filter(function(x) {
    return x>0 //只留下正數
  })
)

陣列名稱.silce( ) 括弧內數字位置(從零開始數)後面全部保留,切掉前面。若有逗號的話代表切到哪裡。 陣列名稱.splice( ) 插入或刪除元素,會改變原本的陣列元素。 陣列名稱.sort( ) 排序陣列,數字會當作字串處理,以第一個數字判斷,由小排到大。

如果想要數字正確從小排到大,示範如下:

var arr = [1, 30, 21, 4]
arr.sort(function(a, b) {
  if (a === b) return 0
  if (b > a) return -1 //如果 b > a 則交換位置 (由小排到大)
  return 1 
})
console.log(arr)

var arr = [1, 30, 4, 21]
arr.sort(function(a, b) {
  if (a === b) return 0
  return a > b ? -1 : 1 //如果 a > b 是 true 則互換位置(由大排到小)
})

var arr = [1, 30, 4, 21]
arr.sort(function(a, b) {
  return a - b //由小排到大
})
Lichen5221 commented 3 years ago

Immutable 觀念

Immutable 不可變

只有變數的儲存位置會相同,放進去變數的值全部都會新的儲存位置(不會變)。

最常見錯誤用法:

var a = 'hello'
a.toUpperCase( ) //雖然有變成新的東西,但是沒有給他一個接受器。
console.log(a)

修正如下:

var a = 'hello'
a = a.toUpperCase( ) //給了一個接受器
console.log(a)

陣列可以直接改變原來的東西。(例如說 push 指令,直接在該記憶體位置增加東西。)

錯誤用法示範如下:

var a = [1, 2, 3]
arr = arr.push('12345') //會回傳陣列長度
console.log(arr)

修正如下:

var a = [1, 2, 3]
arr.push('12345') //會把 12345 加入到第三個位置裡(從零開始算)。
console.log(arr)

每個指令的規則都不一樣,詳情請參閱 MDN 。