เนื้อหาที่ควรรู้ก่อนอ่านบทความนี้ (สามารถคลิกเข้าไปอ่านข้างในได้เลยนะครับ)
ก่อนที่เราจะพูดถึง Function ว่าคืออะไรในภาษา JavaScript ผมคิดว่ามีสิ่งที่ท่านผู้อ่านต้องรู้ก่อนสองเรื่อง
- JavaScript procedure คืออะไร — JavaScript procedure ก็คือ ชุดของคำสั่ง(Statement)ที่ไว้สำหรับดำเนินการหรือคำนวณค่าบางอย่าง
- Function คืออะไร — ต่อจากข้างบนเลยครับ Function นั้นที่จริงก็คือ ชุดของคำสั่ง(Statement)ที่ไว้สำหรับดำเนินการหรือคำนวณค่าบางอย่าง (JavaScript procedure นั่นเอง)
ซึ่งใน Function หนึ่ง ๆ จะมีส่วนประกอบดังนี้
- ชื่อของฟังก์ชัน(Function’s name)
- ชุดของพารามิเตอร์(List of parameters)
- Statements ของ Function นั้น ๆ
เดี๋ยวผมจะลองยกตัวอย่างการเขียนฟังก์ชันใน JavaScript ให้ดูนะครับเช่น
ฟังก์ชันยกกำลังสอง
function square(number) {
return number * number;
}
- square คือชื่อของฟังก์ชัน
- number คือชุดของพารามิเตอร์(ในตัวอย่างนี้มันมีตัวเดียว จะไม่เรียกว่าชุดก็ได้)
- สิ่งที่อยู่ใน { … } ปีกกา (Curly braces) ก็คือ Statements ของฟังก์ชันนี้
ฟังก์ชันคูณเลข
function multiply(number1, number2) {
return number1 * number2;
}
- multiply คือชื่อของฟังก์ชัน
- number1 และ number2 คือชุดของพารามิเตอร์(ตัวอย่างนี้เรียกว่าชุดของพารามิเตอร์ได้เต็มปากหน่อย)
- สิ่งที่อยู่ใน { … } ปีกกา (Curly braces) ก็คือ Statements ของฟังก์ชันนี้
ฟังก์ชันบางฟังก์ชันอาจจะไม่มี parameter เลยด้วยซ้ำ เช่น
ฟังก์ชันแสดงข้อความ
function showMyName() {
console.log("My name is Sonter.");
}
- showMyName คือชื่อของฟังก์ชัน
- จะเห็นได้ว่าฟังก์ชันนี้ไม่มี parameters
- สิ่งที่อยู่ใน { … } ปีกกา (Curly braces) ก็คือ Statements ของฟังก์ชันนี้
แล้วฟังก์ชันมันมีประโยชน์อะไรล่ะ ?
ถ้าถามผม ผมก็ไม่รู้เหมือนกันครับ
อ้างอิง
เดี๋ยวก่อนครับ!!! ผมแค่ล้อเล่นครับ ที่จริงมันมีข้อดีเยอะมาก ๆ เลย แต่ที่เห็นชัด ๆ เลยก็คือ
- ลดความซับซ้อนของ Code
- ลด Code ที่ซ้ำซ้อน
- ทำให้ Code อ่านง่ายมากขึ้น
- ทำให้ Code มีความ Generic มากขึ้น
- ทำให้ Code สามารถ Reusable
และอื่น ๆ อีกมากมาย
เดี๋ยวผมจะลองยกตัวอย่างให้ดูนะครับ
โปรแกรมที่แสดง คำนำหน้า, ชื่อ และนามสกุลออกมา
let title1 = "Mr.";
let firstName1 = "Smith";
let lastName1 = "Kenny";let fullName1 = title1 + " " + firstName1 + " " + lastName1 + ".";
console.log("Title is " + title1);
console.log("Firstname is " + firstName1);
console.log("Lastname is " + lastName1);
console.log("Fullname is " + fullName1);let title2 = "Ms.";
let firstName2 = "Emma";
let lastName2 = "Gonna";let fullName2 = title2 + " " + firstName2 + " " + lastName2 + ".";
console.log("Title is " + title2);
console.log("Firstname is " + firstName2);
console.log("Lastname is " + lastName2);
console.log("Fullname is " + fullName2);let title3 = "General";
let firstName3 = "Source";
let lastName3 = "Manny";let fullName3 = title3 + " " + firstName3 + " " + lastName3 + ".";
console.log("Title is " + title3);
console.log("Firstname is " + firstName3);=
console.log("Lastname is " + lastName3);
console.log("Fullname is " + fullName3);
ตรงที่ผมทำตัวหน้าไว้คือ Code
- ที่ค่อนข้างยาวอ่านแล้วอาจจะงง (Code ซับซ้อน)
- มีการทำในลักษณะเดียวกันนี้หลายรอบ (Code ซ้ำซ้อน)
- Code ก็ไม่สามารถนำมาใช้ซ้ำได้ (Reusable ไม่ได้)
ทีนี้ผมจะลองนำ Code ที่มีปัญหาดังกล่าวมาทำเป็น Function นะครับจะได้แบบนี้
function showName(title, firstName, lastName) {
let fullName = title + " " + firstName + " " + lastName + ".";
console.log("Title is " + title);
console.log("Firstname is " + firstName);
console.log("Lastname is " + lastName);
console.log("Fullname is " + fullName);
}let title1 = "Mr.";
let firstName1 = "Smith";
let lastName1 = "Kenny";showName(title1, firstName1, lastName1);let title2 = "Ms.";
let firstName2 = "Emma";
let lastName2 = "Gonna";showName(title2, firstName2, lastName2);let title3 = "General";
let firstName3 = "Source";
let lastName3 = "Manny";showName(title3, firstName3, lastName3);
จะเห็นได้ว่า Code ดังกล่าว
- จะมีความซับซ้อนลดลง และชื่อฟังก์ชันก็เป็นตัวบอกด้วยว่า Code ในส่วนนี้จะทำอะไร (ชื่อว่า showName ก็สื่อความหมายว่าจะ แสดงชื่อ)
- ไม่เกิดการซ้ำซ้อนของ Code เนื่องจาก Code มีการเขียนไว้ที่เดียวคือใน Function และนำมาใช้ในแต่ละที่
- เมื่อมีคนที่ 4 5 หรือ 6 ก็เพียงแค่เรียกฟังก์ชัน showName อีกรอบก็สามารถแสดงชื่อได้แบบเดียวกับ 3 คนแรก ทำให้ Code มีคุณสมบัติ Reusable