# JavaScript|函式名稱 vs 參數名稱 到底誰是誰🤯
新手最常搞混的 JS 修羅場:
傳值的時候,常常不是報錯就是 undefined,最後整個人都卡在那邊便秘臉懷疑人生
到底要叫誰才會回應?🤯🤯🤯
###本篇大綱 📝
- 函式名稱和參數名稱到底差在哪?每次呼叫都崩潰,到底要叫誰?╰(〒皿〒)╯
🧷 附超直白理解地圖 & 常見小陷阱
- 常見的的命名方式,保證你同事不打你
- 小小測驗 看到這邊你就一級棒 🪬

<hr>
### 函式名稱 / 參數名稱是什麼?
- **函式名稱** → 呼叫時用來執行功能
- **參數名稱** → 接收外部傳入的資料變數、內容
> ☝️ **小 tip**:參數只是暫時代號,等呼叫時才會真正傳進值!
#### 白話圖解 🔍

↓ 來試試吧
```javascript!
function sayHello (name){
console.log('hello'+ name);
}
sayHello(' Anna'); // Anna 沒有定義,所以是字串必須要有引號
// 白話:sayHello 把 Anne 傳值進去
// 最後會印出 hello Anna
// ✶ 要注意的陷阱, 沒有先把參數定義就是字串,要記得加引號 or 雙引號否則會報 not defined 因為找不到變數
sayHello(Anna); // ❌ 錯誤:Anna 沒有引號,JS 會當變數找,會報錯!
```
↓ 最後成功印出 hello Anna

<hr>
### 常見參數命名(必學!)
###### *⌖最常見*
- **駝峰式命名 camel Case**
不使用空格的短語書寫方式和駱駝的駝峰類似
-- 大駝峰:所有第一個單字大寫
ex: SayHello、GoodBye
-- 小駝峰:第一個單字開頭字母小寫,第二個單字開頭字母為大寫
ex: sayHello、goodBye
let userName = 'Anna';
- **蛇型命名 Snake Case**
全部小寫,單字和單字之間用底線連接(將空格以底線替代)
ex: say_hello、good_bye
let user_Name = 'Anna';
寫完之後問問自己:
明天還看不看得懂用途和角色
命名是否一致,意義是否清楚
## 🐮🔪小試:
```javascript!
天氣很熱,來到飲料店,要點QQ內內好喝到咩噗少全要怎麼傳送給店員?
// 品名:QQ內內好喝到咩噗 冰塊:少冰 甜度:全糖
// 括號內先給他一個暫定名字,畢竟不知道客人要傳什麼很麻煩的飲料進來
function orderDrink( _____ , _____ , _____ ) {
// 製作過程&打印,我們先打印餐點就好
console.log('顧客您好請確認您的餐點', _____ , _____ , _____ );
}
orderDrink('_____' , '_____' , '_____' );
```

🪬🪬🪬
寫好了嗎?那換我囉 🪬
```javascript!
function orderDrink( teaName , iceLevel , sugerLevel ) {
console.log('顧客您好請確認您的餐點', '品項 '+teaName , '冰量 '+iceLevel ,'甜度 '+sugerLevel );
}
orderDrink('bubble tea', '70%', '100%');
```

---
📺 JS 新手宇宙 - EP . 01
###### ( 你在這裡 ↓ )
[ 🩷 EP1 《 函式和參數名稱、傳值再也不會搞混! 》](https://hackmd.io/pPUQiXn2TgGJrDTSLJR6sw)
[🩷 EP2 《 for 迴圈:愛你 10 天計畫 》](https://hackmd.io/@Ph6kL2hVQeu-dSTdobpoJw/rJF-uhgOll)
[🩷 EP3 《 陣列 Array:push、pop、splice 魚塘管理💅 》](https://hackmd.io/@Ph6kL2hVQeu-dSTdobpoJw/ByqK9u-Klx)
[🩷 EP4 《 物件 Object:80s 畢業紀念冊大曝光,二十年後我還記得你 💘 》](https://hackmd.io/@Ph6kL2hVQeu-dSTdobpoJw/SkkxzBY9ee)
##### 參考資料
{%preview https://developer.mozilla.org/zh-CN/docs/Glossary/Camel_case %}