ใช่ การวางการประกาศตัวแปร JavaScript ทั้งหมดไว้ที่ด้านบนของสคอป (Scope) ถือเป็นแนวทางปฏิบัติที่ดี (Best Practice) ซึ่งช่วยให้โค้ดอ่านง่ายขึ้น ลดข้อผิดพลาด และป้องกันปัญหา Hoisting ที่อาจสร้างบั๊กได้ ให้ดูตัวอย่างด้านล่างนี้ครับ
ตัวอย่างโค้ด
<html>
<head>
<title>JavaScript String match() Method</title>
</head>
<body>
<script>
// ประกาศตัวแปรกลุ่มเดียวกันไว้ด้านบน
var str, re, found;
str = "For more information, see Chapter 3.4.5.1";
re = /(chapter \d+(\.\d)*)/i;
found = str.match(re);
document.write(found);
</script>
</body>
</html>
เหตุผลที่ควรประกาศตัวแปรไว้ด้านบน
- จุดตรวจสอบเดียว: มองเห็นตัวแปรทั้งหมดในสคอปได้ทันที ไม่ต้องเลื่อนหาขึ้น-ลง
- ป้องกันตัวแปร Global: ลดโอกาสสร้างตัวแปร Global โดยไม่ได้ตั้งใจ (Implied Globals)
- ป้องกันการประกาศซ้ำ: เห็นตัวแปรที่ประกาศไปแล้วชัดเจน ลดการ declare ซ้ำ (Re-declaration)
- โค้ดอ่านง่าย: ทีมงานหรือคนอื่นอ่านโค้ดเข้าใจโครงสร้างข้อมูลได้เร็วขึ้น
หมายเหตุ: ใน ES6+ ควรใช้ const และ let แทน var ซึ่งมี Block Scope ทำให้การจัดการตัวแปรปลอดภัยและทันสมัยกว่าเดิม