1. บทนำ
JavaScript เป็นภาษาการเขียนโปรแกรมที่สำคัญในงานพัฒนาเว็บ โดยเฉพาะการจัดการสตริงที่มักใช้ในการจัดรูปแบบข้อมูล การวิเคราะห์ และการอัปเดต UI อย่างไดนามิก
ในบทความนี้ เราจะอธิบายวิธีการของสตริงใน JavaScript ที่ใช้บ่อยสามวิธีคือ substr , substring และ slice อย่างละเอียด เนื่องจากวิธีเหล่านี้ให้ฟังก์ชันคล้ายกัน การเข้าใจความแตกต่างจะช่วยให้คุณเลือกใช้ได้อย่างเหมาะสมในแต่ละสถานการณ์
เราจะอธิบายเหตุผลที่ substr ถูกยกเลิกการใช้งานและเสนอวิธีทางเลือก พร้อมคำแนะนำเชิงปฏิบัติสำหรับการเขียน JavaScript ตามแนวปฏิบัติที่ทันสมัย
2. ข้อมูลพื้นฐานและการใช้งานของแต่ละเมธอด
ส่วนนี้อธิบายไวยากรณ์พื้นฐานและการใช้งานของ substr , substring และ slice การเข้าใจเมธอดเหล่านี้จะช่วยให้คุณเลือกใช้ได้อย่างเหมาะสมและทำให้โค้ดอ่านง่ายและบำรุงรักษาได้ดีขึ้น
2.1 เมธอด substr
ไวยากรณ์:
string.substr(start, length)
คำอธิบาย:
start: ระบุตำแหน่งเริ่มต้นสำหรับการสกัด (นับจาก 0)length: ระบุจำนวนอักขระที่ต้องการสกัด หากไม่ระบุ การสกัดจะดำเนินต่อจนถึงจบสตริง
ตัวอย่างการใช้งาน:
let str = "JavaScript";
console.log(str.substr(0, 4)); // Output: "Java"
console.log(str.substr(4, 6)); // Output: "Script"
หมายเหตุ:
เมธอด substr ถูกยกเลิกการใช้งาน (deprecated) และแนะนำให้หลีกเลี่ยงการใช้ในโค้ดใหม่ ใช้ slice หรือ substring แทน ตัวอย่างทางเลือก (ใช้ slice):
let str = "JavaScript";
console.log(str.slice(0, 4)); // Output: "Java"
console.log(str.slice(4)); // Output: "Script"
2.2 เมธอด substring
ไวยากรณ์:
string.substring(start, end)
คำอธิบาย:
start: ดัชนีเริ่มต้นของการสกัดend: ดัชนีสิ้นสุด (อักขระที่ตำแหน่งนี้จะไม่ถูกรวม)
ตัวอย่างการใช้งาน:
let str = "JavaScript";
console.log(str.substring(0, 4)); // Output: "Java"
console.log(str.substring(4, 10)); // Output: "Script"
จุดสำคัญ:
- ลำดับอาร์กิวเมนต์จะถูกปรับอัตโนมัติ: หากเรียก
substring(10, 4)จะถูกพิจารณาเป็นsubstring(4, 10) - ค่าติดลบจะถูกละเลย: อาร์กิวเมนต์ใด ๆ ที่เป็นค่าติดลบจะถูกถือเป็น 0
ตัวอย่างทางเลือกเมื่อจำเป็นต้องใช้ค่าติดลบ (ใช้ slice):
let str = "JavaScript";
console.log(str.slice(-6)); // Output: "Script"
2.3 เมธอด slice
ไวยากรณ์:
string.slice(start, end)
คำอธิบาย:
start: ดัชนีเริ่มต้นของการสกัดend: ดัชนีสิ้นสุด (อักขระที่ตำแหน่งนี้จะไม่ถูกรวม)
ตัวอย่างการใช้งาน:
let str = "JavaScript";
console.log(str.slice(0, 4)); // Output: "Java"
console.log(str.slice(-6)); // Output: "Script"
จุดสำคัญ:
- รองรับค่าติดลบ: ดัชนีติดลบจะนับจากท้ายสตริง
- ทำงานได้ทั้งกับสตริงและอาเรย์: สามารถสกัดสมาชิกจากอาเรย์ได้ ทำให้มีความยืดหยุ่นสูง

3. ตารางเปรียบเทียบของแต่ละเมธอด
| Method | Start Position | End Position | Negative Values | Recommendation Level |
|---|---|---|---|---|
substr | Required | Length-based | × | Deprecated |
substring | Required | Required | × | High |
slice | Required | Required | ○ | Highly Recommended |
การเลือกเมธอดที่เหมาะสมตามกรณีการใช้งาน:
- สกัดส่วนสั้น: →
slice - ต้องการค่าติดลบ: →
slice - ความเข้ากันได้กับโค้ดเก่า: → หลีกเลี่ยง
substr; ย้ายไปใช้เมธอดอื่นตามความจำเป็น
4. ตัวอย่างโค้ดเชิงปฏิบัติ
การจัดการสตริงพื้นฐาน
let text = "JavaScriptProgramming";
// Extract the first 10 characters
console.log(text.slice(0, 10)); // "JavaScript"
// Extract the last 3 characters
console.log(text.slice(-3)); // "ing"
การสกัดค่าตามรูปแบบ
let url = "https://example.com/index.html";
// Get the file name
console.log(url.slice(url.lastIndexOf("/") + 1)); // "index.html"
5. วิธีจัดการเมธอดที่ถูกยกเลิก
เมธอด substr ของ JavaScript ถูกยกเลิกการใช้งาน (deprecated) เนื่องจาก substr ถูกจัดเป็นเมธอดที่ไม่แนะนำในสเปค ECMAScript ล่าสุด
ส่วนนี้อธิบายปัญหาที่เกิดจาก substr วิธีทางเลือก และวิธีการย้ายโค้ดของคุณให้ใช้เมธอดที่ทันสมัยต่อไป
5.1 ทำไม substr ถึงถูกยกเลิก?
- อ่านได้ยาก:
substrใช้พารามิเตอร์ที่สองเป็น “จำนวนอักขระที่จะดึงออก,”
ซึ่งแตกต่างจากวิธีอื่นที่ใช้ดัชนีสิ้นสุด.
ความไม่สอดคล้องนี้ทำให้โค้ดเข้าใจยากขึ้น.
- ปัญหาความเข้ากันได้ในอนาคตที่อาจเกิดจากการเปลี่ยนแปลงสเปค:
- ฟีเจอร์เก่าถูกยกเลิกระหว่างการมาตรฐาน ECMAScript.
โค้ดใหม่ไม่ควรพึ่งพาเหล่านั้น.
- ไม่รองรับค่าลบ:
substrไม่รองรับดัชนีลบ, ในขณะที่sliceรองรับ.
5.2 วิธีการย้ายไปใช้วิธีสมัยใหม่
กรณี 1: ดึงสตริงความยาวคงที่
// Deprecated code
let str = "JavaScript";
console.log(str.substr(0, 4)); // "Java"
// Recommended (slice)
console.log(str.slice(0, 4)); // "Java"
กรณี 2: ดึงส่วนท้ายของสตริง
// Deprecated code
console.log(str.substr(-6)); // Error (negative not supported)
// Recommended (slice)
console.log(str.slice(-6)); // "Script"
กรณี 3: ดึงส่วนของ URL หรือชื่อไฟล์
let url = "https://example.com/index.html";
// Deprecated code
let filename = url.substr(url.lastIndexOf("/") + 1);
console.log(filename); // "index.html"
// Recommended (slice)
let filenameNew = url.slice(url.lastIndexOf("/") + 1);
console.log(filenameNew); // "index.html"
5.3 จุดที่ควรรีแฟคเตอร์สำหรับโค้ดเก่า
- ทำการสแกนโค้ด:
- ใช้เครื่องมือเช่น ESLint เพื่อตรวจหาที่ที่ใช้
substr.
- เสริมความครอบคลุมของการทดสอบ:
- ใช้ unit test เพื่อให้แน่ใจว่าพฤติกรรมยังคงถูกต้องหลังจากเปลี่ยนวิธี
- ย้ายอย่างค่อยเป็นค่อยไป:
- ให้ความสำคัญกับการแทนที่ในส่วนที่สำคัญหรือที่เรียกใช้บ่อย
5.4 ประโยชน์ของการย้ายออกจาก substr
- อ่านง่ายและบำรุงรักษาง่ายขึ้น:
- ความตั้งใจของโค้ดชัดเจนขึ้น, ทำให้ทีมเข้าใจดีขึ้น
- เข้ากันได้กับมาตรฐานสมัยใหม่:
- การปฏิบัติตามมาตรฐาน ECMAScript ทำให้มั่นคงในระยะยาว
- รองรับค่าลบได้อย่างยืดหยุ่น:
sliceทำให้การดึงข้อมูลจากตำแหน่งเริ่มและสิ้นสุดทำได้กระชับ

6. คำถามที่พบบ่อย (FAQ)
ส่วนนี้สรุปคำถามและคำตอบทั่วไปเกี่ยวกับวิธีการจัดการสตริงใน JavaScript
Q1: ฉันยังสามารถใช้ substr ได้หรือไม่?
A:
ใช่, เบราว์เซอร์สมัยใหม่ส่วนใหญ่ยังรองรับ substr.
อย่างไรก็ตาม, เนื่องจาก ECMAScript ระบุว่าเป็นการยกเลิก, ควรหลีกเลี่ยงในโครงการใหม่หรือโค้ดเบสที่ต้องการความเข้ากันได้ในอนาคต.
ทางเลือกที่แนะนำ:
let str = "JavaScript";
console.log(str.slice(0, 4)); // "Java"
Q2: ความแตกต่างระหว่าง slice กับ substring คืออะไร?
A:
ตารางด้านล่างสรุปความแตกต่างของพวกมัน:
| Feature | slice | substring |
|---|---|---|
| End index behavior | End index is excluded | End index is excluded |
| Negative values | Supported | Treated as 0 |
| Flexibility | High | Moderate |
| Recommendation | Highly recommended | Recommended |
ตัวอย่าง:
let str = "JavaScript";
// slice examples
console.log(str.slice(0, 4)); // "Java"
console.log(str.slice(-6)); // "Script"
// substring examples
console.log(str.substring(0, 4)); // "Java"
console.log(str.substring(4, 10)); // "Script"
Q3: ความเสี่ยงของการใช้เมธอดที่ยกเลิกต่อไปคืออะไร?
A:
- การยกเลิกการสนับสนุนจากเบราว์เซอร์:
substrอาจในที่สุดจะไม่รองรับ. - ค่าใช้จ่ายในการบำรุงรักษาเพิ่มขึ้น: การดีบักฟีเจอร์ที่ยกเลิกต้องใช้เวลามากขึ้น.
- คุณภาพโค้ดลดลง: การไม่ปฏิบัติตามมาตรฐานสมัยใหม่ทำให้การอ่านยากขึ้น.
Q4: เมธอดใดดีที่สุดสำหรับสตริงยาว?
A:
slice เป็นตัวเลือกที่ดีที่สุดเพราะรองรับดัชนีลบและให้ความยืดหยุ่นสูง.
ตัวอย่าง:
let longText = "This is a very long text string used for testing purposes.";
// First 10 characters
console.log(longText.slice(0, 10)); // "This is a "
// Last 10 characters
console.log(longText.slice(-10)); // "purposes."
Q5: ฉันจะนับถอยหลังโดยใช้ค่าลบได้อย่างไร?
A:
ใช้ slice, เนื่องจาก substring จะถือค่าลบเป็น 0.
ตัวอย่าง:
let str = "JavaScript";
// slice supports negative values
console.log(str.slice(-6)); // "Script"
// substring treats negative as 0
console.log(str.substring(-6)); // "JavaScript"
Q6: มีความแตกต่างด้านประสิทธิภาพหรือไม่?
A: เบราว์เซอร์สมัยใหม่ไม่แสดงความแตกต่างด้านประสิทธิภาพที่สำคัญระหว่าง slice, substring หรือ substr
เนื่องจากทั้งหมดเป็นฟังก์ชันในตัว, ให้ความสำคัญกับความอ่านง่ายและการบำรุงรักษาเหนือการปรับจูนระดับจุล.
7. สรุปและแนวปฏิบัติที่แนะนำ
ในบทความนี้ เราได้สำรวจเมธอดสตริงของ JavaScript substr, substring, และ slice โดยครอบคลุมไวยากรณ์พื้นฐาน ความแตกต่าง ตัวอย่างโค้ดเชิงปฏิบัติ และกลยุทธ์การย้ายจากเมธอดที่เลิกใช้
ส่วนนี้จัดเรียงคุณลักษณะสำคัญของแต่ละเมธอดใหม่และนำเสนอแนวปฏิบัติสมัยใหม่ที่แนะนำ
7.1 สรุปของแต่ละเมธอด
| Method Name | Main Characteristics | Recommendation Level |
|---|---|---|
substr | Specifies start index and length; does not support negative values. Deprecated. | Not Recommended |
substring | Specifies start and end indices; negative values become 0. Suitable for simple use cases. | Recommended |
slice | Specifies start and end indices; supports negative values. Very flexible and versatile. | Highly Recommended |
7.2 เกณฑ์การเลือกใช้งานเชิงปฏิบัติ
- ใช้
substringสำหรับการสกัดช่วงอย่างง่าย:
- เหมาะเมื่อไม่ต้องการค่าติดลบ. ตัวอย่าง:
let str = "JavaScript"; console.log(str.substring(0, 4)); // Output: "Java"
- ใช้
sliceเพื่อความยืดหยุ่นสูงสุด:
- รองรับดัชนีติดลบและเป็นเมธอดที่แนะนำสำหรับโค้ดใหม่. ตัวอย่าง:
let str = "JavaScript"; console.log(str.slice(-6)); // Output: "Script"
- แทนที่
substrให้เร็วที่สุดเท่าที่จะทำได้:
- ย้ายไปใช้
sliceหรือsubstringเมื่อดูแลโค้ดเก่า
7.3 แนวปฏิบัติสมัยใหม่
- เขียนโค้ดโดยคำนึงถึงความอ่านง่าย:
- โค้ดที่ชัดเจนและกระชับช่วยเพิ่มการบำรุงรักษาในระยะยาว
- หลีกเลี่ยงเมธอดที่เลิกใช้:
substrอาจสูญเสียการสนับสนุนจากเบราว์เซอร์ในอัปเดตอนาคต—ควรย้ายใช้เร็ว
- ใช้
sliceเมื่อทำงานกับค่าติดลบ:
sliceเป็นเมธอดเดียวที่จัดการดัชนีติดลบได้อย่างถูกต้อง
- ใช้ ESLint และชุดทดสอบเพื่อรักษาคุณภาพโค้ด:
- การวิเคราะห์แบบสถิตช่วยตรวจจับเมธอดที่เลิกใช้และบังคับใช้สไตล์โค้ดสมัยใหม่
7.4 ตัวอย่างสไตล์การเขียนโค้ดสมัยใหม่
// Example: Extract domain from an email address
let email = "user@example.com";
let domain = email.slice(email.indexOf("@") + 1);
console.log(domain); // Output: "example.com"
// Example: Get file extension from a URL
let url = "document.pdf";
let extension = url.slice(-3);
console.log(extension); // Output: "pdf"
7.5 แผนปฏิบัติการสำหรับผู้อ่าน
- ตรวจสอบโค้ดที่มีอยู่ของคุณ:
- ตรวจสอบว่าโครงการของคุณใช้
substrหรือไม่และแทนที่เมื่อจำเป็น
- ปฏิบัติตามแนวปฏิบัติที่ดีที่สุดในโค้ดใหม่:
- ใช้รูปแบบที่ทันสมัยและยืดหยุ่นและหลีกเลี่ยงฟีเจอร์ที่เลิกใช้
- ใช้ประโยชน์จากคอมเมนต์และคำถามจากชุมชน:
- แบ่งปันคำถามหรือกรณีการใช้งานเพื่อช่วยผู้อื่นเรียนรู้พร้อมกับเสริมความเข้าใจของคุณ
สรุป
บทความนี้ให้คำอธิบายเชิงลึกเกี่ยวกับเมธอด substr, substring, และ slice ของ JavaScript รวมถึงไวยากรณ์ ตัวอย่าง ตารางเปรียบเทียบ และกลยุทธ์การย้าย
- หลีกเลี่ยง
substrเนื่องจากมันถูกเลิกใช้. - ใช้
substringสำหรับสถานการณ์ง่าย. - ใช้
sliceเพื่อความยืดหยุ่นสูงสุดและแนวปฏิบัติสมัยใหม่.
ใช้ข้อมูลเหล่านี้เพื่อเขียนโค้ด JavaScript ที่มีประสิทธิภาพและบำรุงรักษาได้ง่าย

8. ลิงก์และอ้างอิงที่เกี่ยวข้อง
เพื่อเพิ่มพูนความเข้าใจของคุณเกี่ยวกับ substr, substring, และ slice นี่คือลิงก์และอ้างอิงที่เป็นประโยชน์ เอกสารอย่างเป็นทางการและแหล่งเรียนรู้จะช่วยให้คุณตามทันการอัปเดตและเทคนิคล่าสุดของ JavaScript
8.1 เอกสารอย่างเป็นทางการ
- MDN Web Docs – วัตถุ String ของ JavaScript
- ลิงก์: String – MDN Web Docs
- ภาพรวม: เอกสารอ้างอิงครบถ้วนสำหรับวัตถุ
Stringของ JavaScript พร้อมสเปคและตัวอย่างโดยละเอียด
- สเปค ECMAScript (ECMA-262)
- ลิงก์: สเปคอย่างเป็นทางการของ ECMAScript
- ภาพรวม: สเปคภาษาทางการที่ครอบคลุมฟีเจอร์ล่าสุดของ ECMAScript, วิธีการที่เลิกใช้, และรายละเอียดทางเทคนิค
8.2 เว็บไซต์การเรียนรู้และบทเรียน
- JavaScript.info – คู่มือการจัดการสตริง
- ลิงก์: JavaScript.info
- ภาพรวม: คู่มือที่ครอบคลุมทั้งการทำงานพื้นฐานและขั้นสูงของสตริง พร้อมตัวอย่างเชิงปฏิบัติ
- Progate – คอร์ส JavaScript ตั้งแต่ระดับเริ่มต้นถึงระดับกลาง
- ลิงก์: Progate
- ภาพรวม: แพลตฟอร์มเชิงโต้ตอบที่เหมาะสำหรับผู้เริ่มต้นเรียนผ่านการฝึกเขียนโค้ดจริง
- DotInstall – บทเรียนแนะนำ JavaScript
- ลิงก์: DotInstall
- ภาพรวม: วิดีโอสั้น ๆ ที่ทำให้การเรียน JavaScript ด้วยภาพเป็นเรื่องง่ายและรวดเร็ว
8.3 แหล่งโค้ดตัวอย่างเชิงปฏิบัติ
- GitHub – โปรเจกต์ตัวอย่าง JavaScript
- ลิงก์: GitHub
- ภาพรวม: เรียนรู้แนวปฏิบัติที่ดีที่สุดและรูปแบบการใช้งานจริงโดยสำรวจโครงการโอเพ่นซอร์ส
- CodePen – การแชร์โค้ดแบบโต้ตอบ
- ลิงก์: CodePen
- ภาพรวม: แชร์และทดสอบโค้ดของคุณกับนักพัฒนาคนอื่น หรือเรียกดูตัวอย่างเพื่อเป็นแรงบันดาลใจ
8.4 หนังสือแนะนำ
- ภาพรวม: หนังสืออ้างอิงที่ครอบคลุมและเป็นอำนาจสูงสุด ตั้งแต่พื้นฐานจนถึงฟีเจอร์ขั้นสูงของ JavaScript
- ภาพรวม: หนังสืออ้างอิงเชิงปฏิบัติที่มุ่งเน้น JavaScript สมัยใหม่และมาตรฐานการเขียนโค้ดที่อัปเดตล่าสุด
8.5 ชุมชนและฟอรั่ม
- Stack Overflow (ญี่ปุ่น)
- ลิงก์: Stack Overflow
- ภาพรวม: ชุมชน Q&A ที่คุณสามารถแก้ไขปัญหา JavaScript ได้อย่างมีประสิทธิภาพ
- Qiita
- ลิงก์: Qiita
- ภาพรวม: แพลตฟอร์มญี่ปุ่นที่เต็มไปด้วยบทความเชิงปฏิบัติและกรณีศึกษา JavaScript
- Teratail
- ลิงก์: Teratail
- ภาพรวม: เว็บไซต์ Q&A ภาษาญี่ปุ่นที่เหมาะสำหรับการถามคำถามเชิงเทคนิคในภาษาท้องถิ่น
สรุป
ส่วนนี้ได้นำเสนอแหล่งทรัพยากรที่หลากหลาย — ตั้งแต่เอกสารอ้างอิงอย่างเป็นทางการ ไปจนถึงบทเรียน, คลังโค้ดตัวอย่าง, และแพลตฟอร์มชุมชน — เพื่อสนับสนุนการเรียนรู้ต่อเนื่องเกี่ยวกับการจัดการสตริงใน JavaScript
ประเด็นสำคัญที่ควรจำ:
- ตรวจสอบเอกสารอย่างเป็นทางการเป็นประจำ:
- ทำให้สไตล์การเขียนโค้ดของคุณสอดคล้องกับมาตรฐานล่าสุด
- เสริมทักษะด้วยการเขียนโค้ดจริง:
- การฝึกทำให้แนวคิดชัดเจนขึ้นและเพิ่มประสิทธิภาพการใช้งานในโลกจริง
- มีส่วนร่วมกับชุมชน:
- การแบ่งปันคำถามและวิธีแก้ไขช่วยให้ความเข้าใจลึกซึ้งยิ่งขึ้นและขยายเครือข่ายของคุณ



