You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
8.9 KiB
80 lines
8.9 KiB
<!--
|
|
CO_OP_TRANSLATOR_METADATA:
|
|
{
|
|
"original_hash": "8328f58f4593b4671656ff8f4b2edbd9",
|
|
"translation_date": "2025-10-23T20:43:58+00:00",
|
|
"source_file": "2-js-basics/2-functions-methods/assignment.md",
|
|
"language_code": "th"
|
|
}
|
|
-->
|
|
# สนุกกับฟังก์ชัน
|
|
|
|
## คำแนะนำ
|
|
|
|
ในงานนี้ คุณจะได้ฝึกสร้างฟังก์ชันประเภทต่าง ๆ เพื่อเสริมสร้างความเข้าใจเกี่ยวกับฟังก์ชันใน JavaScript, พารามิเตอร์, ค่าเริ่มต้น และคำสั่ง return
|
|
|
|
สร้างไฟล์ JavaScript ชื่อ `functions-practice.js` และเขียนฟังก์ชันดังต่อไปนี้:
|
|
|
|
### ส่วนที่ 1: ฟังก์ชันพื้นฐาน
|
|
1. **สร้างฟังก์ชันชื่อ `sayHello`** ที่ไม่มีพารามิเตอร์ และแค่แสดงข้อความ "Hello!" ใน console
|
|
|
|
2. **สร้างฟังก์ชันชื่อ `introduceYourself`** ที่รับพารามิเตอร์ `name` และแสดงข้อความใน console เช่น "Hi, my name is [name]"
|
|
|
|
### ส่วนที่ 2: ฟังก์ชันที่มีพารามิเตอร์เริ่มต้น
|
|
3. **สร้างฟังก์ชันชื่อ `greetPerson`** ที่รับพารามิเตอร์สองตัว: `name` (จำเป็น) และ `greeting` (ไม่จำเป็น, ค่าเริ่มต้นคือ "Hello") ฟังก์ชันควรแสดงข้อความใน console เช่น "[greeting], [name]!"
|
|
|
|
### ส่วนที่ 3: ฟังก์ชันที่คืนค่า
|
|
4. **สร้างฟังก์ชันชื่อ `addNumbers`** ที่รับพารามิเตอร์สองตัว (`num1` และ `num2`) และคืนค่าผลรวมของตัวเลขทั้งสอง
|
|
|
|
5. **สร้างฟังก์ชันชื่อ `createFullName`** ที่รับพารามิเตอร์ `firstName` และ `lastName` และคืนค่าชื่อเต็มในรูปแบบข้อความเดียว
|
|
|
|
### ส่วนที่ 4: ผสมผสานทั้งหมดเข้าด้วยกัน
|
|
6. **สร้างฟังก์ชันชื่อ `calculateTip`** ที่รับพารามิเตอร์สองตัว: `billAmount` (จำเป็น) และ `tipPercentage` (ไม่จำเป็น, ค่าเริ่มต้นคือ 15) ฟังก์ชันควรคำนวณและคืนค่าจำนวนเงินทิป
|
|
|
|
### ส่วนที่ 5: ทดสอบฟังก์ชันของคุณ
|
|
เพิ่มคำสั่งเรียกใช้ฟังก์ชันเพื่อทดสอบแต่ละฟังก์ชัน และแสดงผลลัพธ์โดยใช้ `console.log()`
|
|
|
|
**ตัวอย่างการเรียกใช้เพื่อทดสอบ:**
|
|
```javascript
|
|
// Test your functions here
|
|
sayHello();
|
|
introduceYourself("Sarah");
|
|
greetPerson("Alex");
|
|
greetPerson("Maria", "Hi");
|
|
|
|
const sum = addNumbers(5, 3);
|
|
console.log(`The sum is: ${sum}`);
|
|
|
|
const fullName = createFullName("John", "Doe");
|
|
console.log(`Full name: ${fullName}`);
|
|
|
|
const tip = calculateTip(50);
|
|
console.log(`Tip for $50 bill: $${tip}`);
|
|
```
|
|
|
|
## เกณฑ์การประเมิน
|
|
|
|
| เกณฑ์ | ดีเยี่ยม | พอใช้ | ต้องปรับปรุง |
|
|
| -------- | --------- | -------- | ----------------- |
|
|
| **การสร้างฟังก์ชัน** | ฟังก์ชันทั้ง 6 ถูกสร้างขึ้นอย่างถูกต้อง พร้อมไวยากรณ์และการตั้งชื่อที่เหมาะสม | ฟังก์ชัน 4-5 ถูกสร้างขึ้นอย่างถูกต้อง มีปัญหาไวยากรณ์เล็กน้อย | สร้างฟังก์ชันน้อยกว่า 3 หรือมีข้อผิดพลาดไวยากรณ์สำคัญ |
|
|
| **พารามิเตอร์และค่าเริ่มต้น** | ใช้พารามิเตอร์ที่จำเป็น, พารามิเตอร์ที่ไม่จำเป็น และค่าเริ่มต้นได้อย่างถูกต้องตามที่ระบุ | ใช้พารามิเตอร์ได้ถูกต้อง แต่มีปัญหาเกี่ยวกับค่าเริ่มต้น | การใช้งานพารามิเตอร์ไม่ถูกต้องหรือขาดหาย |
|
|
| **ค่าที่คืนกลับ** | ฟังก์ชันที่ควรคืนค่าทำได้อย่างถูกต้อง และฟังก์ชันที่ไม่ควรคืนค่าทำเพียงแค่การกระทำ | ค่าที่คืนกลับส่วนใหญ่ถูกต้อง มีปัญหาเล็กน้อย | มีปัญหาสำคัญเกี่ยวกับคำสั่ง return |
|
|
| **คุณภาพของโค้ด** | โค้ดสะอาดและจัดระเบียบดี พร้อมชื่อตัวแปรที่มีความหมายและการจัดวางที่เหมาะสม | โค้ดทำงานได้ แต่ควรปรับปรุงให้สะอาดหรือจัดระเบียบมากขึ้น | โค้ดอ่านยากหรือจัดโครงสร้างไม่ดี |
|
|
| **การทดสอบ** | ฟังก์ชันทั้งหมดถูกทดสอบด้วยคำสั่งเรียกใช้ที่เหมาะสม และผลลัพธ์แสดงอย่างชัดเจน | ฟังก์ชันส่วนใหญ่ถูกทดสอบอย่างเพียงพอ | การทดสอบฟังก์ชันมีข้อจำกัดหรือไม่ถูกต้อง |
|
|
|
|
## ความท้าทายเพิ่มเติม (ไม่บังคับ)
|
|
|
|
หากคุณต้องการท้าทายตัวเองเพิ่มเติม:
|
|
|
|
1. **สร้างเวอร์ชันฟังก์ชันแบบลูกศร** ของหนึ่งในฟังก์ชันของคุณ
|
|
2. **สร้างฟังก์ชันที่รับฟังก์ชันอื่นเป็นพารามิเตอร์** (เช่นตัวอย่าง `setTimeout` จากบทเรียน)
|
|
3. **เพิ่มการตรวจสอบข้อมูลนำเข้า** เพื่อให้ฟังก์ชันของคุณจัดการกับข้อมูลนำเข้าที่ไม่ถูกต้องได้อย่างเหมาะสม
|
|
|
|
---
|
|
|
|
> 💡 **เคล็ดลับ**: อย่าลืมเปิด console ของนักพัฒนาในเบราว์เซอร์ของคุณ (F12) เพื่อดูผลลัพธ์ของคำสั่ง `console.log()` ของคุณ!
|
|
|
|
---
|
|
|
|
**ข้อจำกัดความรับผิดชอบ**:
|
|
เอกสารนี้ได้รับการแปลโดยใช้บริการแปลภาษา AI [Co-op Translator](https://github.com/Azure/co-op-translator) แม้ว่าเราจะพยายามให้การแปลมีความถูกต้อง แต่โปรดทราบว่าการแปลโดยอัตโนมัติอาจมีข้อผิดพลาดหรือความไม่ถูกต้อง เอกสารต้นฉบับในภาษาดั้งเดิมควรถือเป็นแหล่งข้อมูลที่เชื่อถือได้ สำหรับข้อมูลที่สำคัญ ขอแนะนำให้ใช้บริการแปลภาษามืออาชีพ เราไม่รับผิดชอบต่อความเข้าใจผิดหรือการตีความผิดที่เกิดจากการใช้การแปลนี้ |