ได้ คุณสามารถใช้ตัวแปร JavaScript ก่อนที่จะประกาศได้ ด้วยกลไกที่เรียกว่า Hoisting (การยกขึ้น) พาร์เซอร์จะอ่านฟังก์ชันทั้งหมดก่อนรันจริง
พฤติกรรมที่ตัวแปรปรากฏว่าถูกใช้ก่อนการประกาศ เรียกว่า Hoisting:
rank = 5; var rank;
โค้ดข้างต้นทำงานเหมือนกับ:
var rank; rank = 5;
รายละเอียดเพิ่มเติม
- มีเพียง การประกาศ (declaration) ที่ถูกยกขึ้น (hoisted) ไม่ใช่การกำหนดค่า (initialization)
letและconst(ES6+) ก็มี hoisting แต่อยู่ใน Temporal Dead Zone จึงเข้าถึงไม่ได้ก่อนประกาศ จะโยน ReferenceError- Function Declaration ถูก hoisting ทั้งฟังก์ชัน (รวม body) แต่ Function Expression ไม่ถูก hoisting
แนวทางปฏิบัติ: ควรประกาศตัวแปรก่อนใช้งานเสมอ เพื่อความอ่านง่ายและหลีกเลี่ยงบั๊ก