ตัวแปรท้องถิ่น กับตัวแปรภูมิภาค ชื่อเดียวกันแต่ค่าภายในไม่อ้างอิงเหมือนกัน ใช่ไหมครับ

กระทู้คำถาม


Debug.log(CureentMunu.Name)  // มันจะแสดงค่าเดิมจากรอบแรก
CurrentMenu=menu         //เปลี่ยนค่าตามตัวแปรที่ประกาศโดยนำเข้าทางพารามิตเรอื
Debug.log(CureentMunu.Name)  // ค่าล่าสุด

//ที่ผมสงสัยคือ ถ้า ไม่มี พารามิเตอร์ไปเปลี่ยนค่า CurrentMenu ในฟังก์ชั่น ค่าจะเหมือนตัวแปร CurrentMenu  ที่ประกาศไหม


ในตัวอย่างจะเห็นว่า ผมสร้างตัวชื่อ CurrentMenu จากนั้น ลองก็ใส่ค่าหนึ่ง ลงไป

โปรแกรมทำงานจบไปหนึ่งรอบ  รอบต่อมา ผมเปลี่ยนค่า ที่ตัวแปรภูมิภาค หรือตัวแปรที่ประกาศไว้ตัวแรก  
แต่ว่าตัวแปรท้องถิ่น หรือตัวแปรที่อยู่ในฟังก์ชั่น Showmenu ไม่เปลี่ยนตาม
มันจะเปลี่ยนค่าก็ต่อเมื่อ มีพารามิเตอร์ นำค่าจากภายนอกเข้ามา นั้นคือ CurrentMenu = Menu  ตัวแปรท้องถิ่นจึงจะมีค่าเหมือนกับตัวแปรภูมิภาค

ถ้าฟังก์ชั่นไม่โดนเรียก ตัวแปรท้องถิ่น ค่าก็ยังเหมือนเดิม ไม่เปลี่ยนตาม ตัวแปรภูมิภาค

มันเป็นเพราะอะไรครับ เขาเรียกว่าอะไรครับ  ตอนแรกผมก็เข้าใจผิดว่า ถ้าตัวแปรชื่อเดียวกัน ถ้าจุดใดจุดหนึ่ง มีการเปลี่ยนแปลงค่า มันจะเปลี่ยนตามเหมือนกัน ทุกตัว
แก้ไขข้อความเมื่อ
แสดงความคิดเห็น
โปรดศึกษาและยอมรับนโยบายข้อมูลส่วนบุคคลก่อนเริ่มใช้งาน อ่านเพิ่มเติมได้ที่นี่