ส่วนที่ 1
หากคุณรู้ว่า JavaScript เป็นภาษาการเขียนโปรแกรมเชิงวัตถุก็ขอแสดงความยินดีด้วย คนส่วนใหญ่ไม่ทราบ หากคุณทราบด้วยว่า JavaScript เป็นภาษาโปรแกรมเชิงฟังก์ชัน ก็ให้ความเคารพอย่างมาก แม้แต่น้อยคนที่รู้เรื่องนี้ (และยังรู้ว่าจริงๆ แล้ว Functional Programming หมายถึงอะไร) แต่จะเป็นอย่างไรถ้าฉันบอกคุณว่า JavaScript นั้นรองรับกระบวนทัศน์มากกว่านี้ด้วย? เนื่องจากเป็นภาษาการเขียนโปรแกรมแบบหลายกระบวนทัศน์ JavaScript จึงสนับสนุนกระบวนทัศน์ที่แตกต่างกันในเวลาเดียวกัน ในบทความนี้ เราจะมาดูกระบวนทัศน์การเขียนโปรแกรมต่างๆ เหล่านี้อย่างละเอียดยิ่งขึ้น นี้เป็นซีรีส์สองส่วน คุณสามารถดู "ส่วนที่สองได้ที่นี่"
นี่เป็นเพียงหนึ่งในบทความมากมายเกี่ยวกับไอที เราแบ่งงานที่ซับซ้อนออกเป็นเนื้อหาที่ย่อยง่ายสำหรับคุณ ติดตามหรือ สนับสนุน pandaquests เพื่อรับเนื้อหาดีๆ เพิ่มเติมเกี่ยวกับ JavaScript การพัฒนาเว็บ และการพัฒนาซอฟต์แวร์ เราพยายามเผยแพร่หลายครั้งต่อสัปดาห์ อย่าพลาดเนื้อหาดีๆ ของเรา
หากคุณมีประสบการณ์กับ JavaScript คุณอาจสังเกตเห็นว่า JavaScript มีคุณลักษณะของหลายกระบวนทัศน์ และนักพัฒนามักจะสามารถใช้กระบวนทัศน์ที่แตกต่างกันรวมกันในโปรเจ็กต์เดียวได้
มีกระบวนทัศน์การเขียนโปรแกรมอีกสองสามแบบ นอกเหนือจากที่กล่าวไว้ในตอนต้น ที่สามารถนำไปใช้ใน JavaScript ได้ แม้ว่าพวกมันจะไม่ได้มีลักษณะเฉพาะใน JavaScript:
การเขียนโปรแกรมที่จำเป็น (IP)
การเขียนโปรแกรมเชิงความจำเป็นเป็นกระบวนทัศน์การเขียนโปรแกรมที่มุ่งเน้นไปที่การอธิบายวิธีการทำงานของโปรแกรมโดยการระบุลำดับของคำสั่งที่เปลี่ยนสถานะของโปรแกรม ใน JavaScript การเขียนโปรแกรมที่จำเป็นมักใช้เพื่อจัดการข้อมูลและควบคุมการไหลของโปรแกรมโดยใช้คำสั่งเช่น if
, for
และ while
นี่คือตัวอย่างของการเขียนโปรแกรมที่จำเป็นใน JavaScript:
let sum = 0; for (let i = 1; i <= 10; i++) { sum += i; } console.log(sum); // 55
ตัวอย่างนี้ใช้การวนซ้ำ for
เพื่อวนซ้ำช่วงตัวเลขและเพิ่มลงในตัวแปร sum
ตัวแปร sum
ได้รับการอัปเดตในการวนซ้ำแต่ละครั้ง และค่าสุดท้ายจะถูกบันทึกไว้ในคอนโซล
ตัวอย่างอื่น
let numbers = [1, 2, 3, 4, 5]; let doubleNumbers = []; for (let i = 0; i < numbers.length; i++) { doubleNumbers.push(numbers[i] * 2); } console.log(doubleNumbers); // [2, 4, 6, 8, 10]
ที่นี่ เราใช้ for loop เพื่อวนซ้ำอาร์เรย์ของตัวเลข และในการวนซ้ำแต่ละครั้ง เราจะเพิ่มตัวเลขเป็นสองเท่าและพุชไปยังอาร์เรย์ใหม่ที่ชื่อ doubleNumbers
ในการเขียนโปรแกรมที่จำเป็น เรามุ่งเน้นไปที่วิธีที่โปรแกรมทำงานและจัดการสถานะของโปรแกรมโดยใช้คำสั่ง
การเขียนโปรแกรมตามขั้นตอน
การเขียนโปรแกรมตามขั้นตอนคือกระบวนทัศน์การเขียนโปรแกรมที่ดำเนินไปตามลำดับเชิงเส้นของการดำเนินการเพื่อให้งานสำเร็จ เน้นการเขียนขั้นตอนหรือฟังก์ชันที่ดำเนินการเฉพาะและสามารถเรียกได้หลายครั้งตลอดทั้งโปรแกรม
ใน JavaScript การเขียนโปรแกรมตามขั้นตอนสามารถทำได้โดยใช้ฟังก์ชัน ลูป และเงื่อนไขเพื่อดำเนินการกับข้อมูล
นี่คือตัวอย่างของโปรแกรมขั้นตอนที่คำนวณแฟกทอเรียลของจำนวนที่กำหนด:
function factorial(n) { let result = 1; for (let i = 1; i <= n; i++) { result *= i; } return result; } console.log(factorial(5)); //120
ในตัวอย่างนี้ ฟังก์ชัน factorial
เป็นขั้นตอนที่รับอาร์กิวเมนต์ n
และใช้การวนซ้ำเพื่อคำนวณแฟกทอเรียล สามารถเรียกใช้ฟังก์ชันได้หลายครั้งโดยมีค่าต่างกันเป็น n
เพื่อให้ได้ผลลัพธ์ที่แตกต่างกัน
อีกตัวอย่างหนึ่งของการเขียนโปรแกรมเชิงขั้นตอนใน JavaScript ก็คือฟังก์ชันที่ยอมรับสตริง และพิมพ์อักขระทุกตัวทีละตัว:
function printChars(str) { for (let i = 0; i < str.length; i++) { console.log(str[i]); } } printChars("Hello World");
ในที่นี้ ฟังก์ชัน printChars
เป็นขั้นตอนที่รับอาร์กิวเมนต์สตริง และใช้การวนซ้ำเพื่อพิมพ์อักขระแต่ละตัวของสตริงนั้นทีละตัว
ในทั้งสองตัวอย่าง ฟังก์ชันใช้วิธีการทีละขั้นตอนเพื่อทำงานให้สำเร็จและสามารถนำมาใช้ซ้ำได้
ใน JavaScript การเขียนโปรแกรมที่จำเป็นและการเขียนโปรแกรมตามขั้นตอนมีความคล้ายคลึงกันตรงที่ทั้งสองเกี่ยวข้องกับลำดับของคำสั่งที่ถูกดำเนินการเพื่อให้บรรลุภารกิจเฉพาะ อย่างไรก็ตาม มีความแตกต่างที่สำคัญบางประการระหว่างสองแนวทางนี้
การเขียนโปรแกรมเชิงความจำเป็นมุ่งเน้นไปที่วิธีการเปลี่ยนสถานะของโปรแกรม ในขณะที่การเขียนโปรแกรมตามขั้นตอนมุ่งเน้นไปที่วิธีการแบ่งโปรแกรมออกเป็นส่วนเล็กๆ
การเขียนโปรแกรมเชิงวัตถุ (OOP)
การเขียนโปรแกรมเชิงวัตถุ (OOP) เป็นกระบวนทัศน์การเขียนโปรแกรมที่ใช้วัตถุและการโต้ตอบของวัตถุในการออกแบบแอปพลิเคชันและโปรแกรมคอมพิวเตอร์ ใน OOP วัตถุคืออินสแตนซ์ของคลาสซึ่งกำหนดคุณสมบัติและวิธีการ
JavaScript รองรับ OOP ผ่านการใช้วัตถุและต้นแบบ ออบเจ็กต์ใน JavaScript คือคอลเล็กชันคู่คีย์-ค่าที่ไม่เรียงลำดับ โดยคีย์คือสตริง และค่าอาจเป็นข้อมูลประเภทใดก็ได้
คลาสใน JavaScript เป็นพิมพ์เขียวสำหรับการสร้างวัตถุ มันกำหนดคุณสมบัติและวิธีการที่วัตถุที่สร้างจากคลาสจะมี
คลาส JavaScript ถูกกำหนดโดยใช้คีย์เวิร์ด class
และสามารถมีเมธอด Constructor ที่ถูกเรียกใช้เมื่อมีการสร้างอ็อบเจ็กต์จากคลาส คลาสยังสามารถมีเมธอดและคุณสมบัติอื่นๆ ได้
JavaScript ยังมีกลไกในการสืบทอดโดยใช้ลูกโซ่ต้นแบบ วัตถุสามารถสืบทอดคุณสมบัติและวิธีการจากต้นแบบซึ่งเป็นวัตถุอื่นที่เชื่อมโยงอยู่ ต้นแบบยังสามารถมีต้นแบบของตัวเองได้ ซึ่งจะสร้างสายโซ่ของต้นแบบ
นี่คือตัวอย่างคำจำกัดความคลาสพื้นฐานใน JavaScript:
class Person { constructor(name, age) { this.name = name; this.age = age; } sayHello() { console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`); } } let person = new Person("John", 30); person.sayHello(); // Output: "Hello, my name is John and I am 30 years old."
ในที่นี้ คลาส Person
ถูกกำหนดด้วยวิธีคอนสตรัคเตอร์ที่ตั้งค่าคุณสมบัติ name
และ age
ของอ็อบเจ็กต์ที่สร้างจากคลาส นอกจากนี้ยังมีเมธอด sayHello
ที่พิมพ์สตริงไปยังคอนโซล
ในตัวอย่างนี้ อ็อบเจ็กต์ถูกสร้างขึ้นจากคลาส Person และเรียกใช้เมธอด sayHello บนคลาสนั้น
การเขียนโปรแกรมฟังก์ชั่น (FP)
Functional Programming (FP) คือกระบวนทัศน์การเขียนโปรแกรมที่เน้นการใช้ฟังก์ชันล้วนๆ ซึ่งเป็นฟังก์ชันที่ส่งคืนเอาต์พุตเดียวกันสำหรับอินพุตที่กำหนดเสมอ และไม่มีผลข้างเคียง ในการเขียนโปรแกรมเชิงฟังก์ชัน ข้อมูลจะถือว่าไม่เปลี่ยนรูปและฟังก์ชันถือเป็นพลเมืองชั้นหนึ่ง ซึ่งหมายความว่าสามารถส่งผ่านเป็นอาร์กิวเมนต์หรือส่งคืนเป็นค่าได้
ใน JavaScript การเขียนโปรแกรมเชิงฟังก์ชันสามารถทำได้โดยใช้ฟังก์ชันที่มีลำดับสูงกว่า (ฟังก์ชันที่รับฟังก์ชันอื่นเป็นอาร์กิวเมนต์หรือฟังก์ชันส่งคืนเป็นเอาต์พุต) การปิด และวิธีการอาร์เรย์ฟังก์ชัน เช่น map
, filter
และ reduce
นี่คือตัวอย่างการใช้ฟังก์ชัน map เพื่อเพิ่มค่าในอาร์เรย์เป็นสองเท่าในลักษณะการทำงาน:
const numbers = [1, 2, 3, 4, 5]; const doubledNumbers = numbers.map(function(number) { return number * 2; }); console.log(doubledNumbers); // [2, 4, 6, 8, 10]
การเขียนโปรแกรมเชิงฟังก์ชันใน JavaScript ยังสนับสนุนการใช้การเรียกซ้ำแทนการวนซ้ำ และการใช้องค์ประกอบของฟังก์ชันและการแกงเพื่อสร้างฟังก์ชันที่ซับซ้อนจากฟังก์ชันที่เรียบง่าย
สิ่งสำคัญที่ควรทราบก็คือ JavaScript ไม่ใช่ภาษาการเขียนโปรแกรมเชิงฟังก์ชันล้วนๆ แต่มีหลายกระบวนทัศน์ ดังนั้นจึงอาจมีผลข้างเคียงและการกลายพันธุ์ แต่รูปแบบการทำงานของการเขียนโปรแกรมสามารถใช้ใน JavaScript ได้
เราเขียนบทความต่างๆ เปรียบเทียบ OOP และ FP ใน JavaScript พร้อมตัวอย่างโค้ด:
ที่นั่นคุณมีมัน เราหวังว่าคุณจะสนุกกับบทความนี้ คุณมีคำถามใดๆ? แจ้งให้เราทราบและแสดงความคิดเห็นด้านล่าง
เรากำลังเผยแพร่บทความหลายบทความต่อสัปดาห์ เราแบ่งงานที่ซับซ้อนออกเป็นเนื้อหาที่ย่อยง่ายสำหรับคุณ เพื่อไม่ให้พลาด โปรดติดตามและสมัครรับข้อมูล pandaquests หากคุณต้องการสนับสนุนเราโดยตรง คุณสามารถให้ทิปหรือสมัครเป็นสมาชิกด้วย "ลิงก์" นี้ เมื่อใช้ ลิงก์ ค่าธรรมเนียม 50% ของคุณจะถูกส่งตรงถึงเรา ด้วยการสนับสนุนอย่างจริงใจของคุณเท่านั้น เราจึงสามารถรักษาบทความของเราให้มีคุณภาพสม่ำเสมอและมีคุณภาพสูงได้ ขอขอบคุณล่วงหน้าและขอให้มีความสุขกับการเขียนโค้ด!
เนื้อหาเพิ่มเติมได้ที่ PlainEnglish.io ลงทะเบียนเพื่อรับ จดหมายข่าวรายสัปดาห์ฟรี ของเรา ติดตามเราบน Twitter, LinkedIn, YouTube และ Discord .
สนใจที่จะขยายขนาดการเริ่มต้นซอฟต์แวร์ของคุณหรือไม่ ลองดูที่ วงจร