參數
1 | function callName(a){ |
會呈現 ↓
所以說用宣告的方式其實沒辦法覆蓋掉的,如果想要覆蓋掉就直接定義一個新的值給 a
。
下面還有另一個例子
1 | function callName(a){ |
會呈現 ↓
原因是因為函式會提升,但是本來定義的小明這個值是在函式的參數上面,而function a
是在程式碼片段創造的,所以function a
是會把小明這個值覆蓋掉的。
物件參數
1 | function callObject(obj) { |
在函式參數當中如果是物件的話,還是會維持原本傳址的特性,所以 family
才會跟著被變動了。
callback function
1 | function functionB(fn) { |
- 洋紅色: functionB 執行時將函式作為參數傳入 fn,並在 functionB 內執行
- 綠色: fn 的小明作為參數傳遞給 functionB 執行時的函式
這邊換一個範例
1 | function callSomeone(name, a) { |
Arguments
1 | function callArg(a){ |
回傳呈現 ↓
arguments 是一個類陣列,它可以拿來做 for 迴圈,但是不能拿來做 forEach
之類的功能。