ความแตกต่างระหว่างตัวแปรท้องถิ่นและระดับโลก

ความแตกต่างที่สำคัญระหว่างตัวแปรท้องถิ่นและตัวแปรส่วนกลาง

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

ความแตกต่างระหว่างตัวแปรท้องถิ่นและระดับโลก

ตัวแปรคืออะไร?

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

นอกจากนี้ยังกำหนดช่วงค่าที่จะต้องจัดเก็บไว้ภายในหน่วยความจำนั้นและลักษณะของการดำเนินการที่สามารถนำไปใช้กับตัวแปรนั้นได้

ขอบเขตของตัวแปร

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

function foo(){
var x;
}

คุณประกาศตัวแปร “x” ภายในฟังก์ชัน “foo” ขอบเขตของตัวแปรนั้นยังคงอยู่ในฟังก์ชันที่ไม่สามารถใช้นอกฟังก์ชันนั้นได้
มีสามตำแหน่งที่คุณสามารถประกาศภาษาโปรแกรมตัวแปรได้:

  • ภายในฟังก์ชันหรือบล็อก: ตัวแปรท้องถิ่น
  • นอกเหนือจากฟังก์ชันทั้งหมด: ตัวแปรโกลบอล
  • ในคำจำกัดความของพารามิเตอร์ฟังก์ชัน: พารามิเตอร์ที่เป็นทางการ

ตัวแปรท้องถิ่น

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

ตัวอย่างของตัวแปรท้องถิ่น

public int add(){
int a =4;
int b=5;
return a+b;
}

ที่นี่ 'a' และ 'b' เป็นตัวแปรท้องถิ่น

ตัวแปรทั่วโลก

A ตัวแปรทั่วโลก ในโปรแกรมจะเป็นตัวแปรที่กำหนดนอกรูทีนย่อยหรือฟังก์ชัน มีขอบเขตทั่วโลกหมายความว่าจะรักษาคุณค่าไว้ตลอดอายุของโปรแกรม ดังนั้นจึงสามารถเข้าถึงได้ทั่วทั้งโปรแกรมด้วยฟังก์ชันใดๆ ที่กำหนดไว้ภายในโปรแกรม เว้นแต่จะมีการบังไว้

ตัวอย่าง:

int a =4;
int b=5;
public int add(){
return a+b;
}

ที่นี่ 'a' และ 'b' เป็นตัวแปรร่วม

ตัวแปรโลคัลเทียบกับตัวแปรโกลบอล

นี่คือความแตกต่างพื้นฐานบางประการระหว่างตัวแปร Local และ Global

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

ข้อดีของการใช้ตัวแปรโกลบอล

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

ข้อดีของการใช้ตัวแปรท้องถิ่น

  • การใช้ตัวแปรภายในเครื่องรับประกันว่าค่าของตัวแปรจะยังคงไม่เปลี่ยนแปลงในขณะที่งานกำลังทำงานอยู่
  • หากงานหลายงานเปลี่ยนแปลงตัวแปรตัวเดียวที่กำลังทำงานพร้อมกัน ผลลัพธ์อาจไม่สามารถคาดเดาได้ แต่การประกาศให้เป็นตัวแปรท้องถิ่นจะช่วยแก้ปัญหานี้ได้ เนื่องจากงานแต่ละงานจะสร้างอินสแตนซ์ของตัวแปรท้องถิ่นของตัวเอง
  • คุณสามารถตั้งชื่อตัวแปรท้องถิ่นให้เหมือนกันในฟังก์ชันต่างๆ ได้ เนื่องจากตัวแปรจะรับรู้โดยฟังก์ชันที่ประกาศไว้เท่านั้น
  • ตัวแปรในเครื่องจะถูกลบทันทีที่ฟังก์ชันใดๆ สิ้นสุดลง และปล่อยพื้นที่หน่วยความจำที่ฟังก์ชันนั้นครอบครอง

ข้อเสียของการใช้ตัวแปรโกลบอล

  • มีตัวแปรที่ประกาศเป็นตัวแปรมากเกินไป ตัวแปรนั้นจะยังคงอยู่ในหน่วยความจำจนกว่าการทำงานของโปรแกรมจะเสร็จสิ้น นี่อาจทำให้เกิดปัญหาหน่วยความจำไม่เพียงพอ
  • ข้อมูลสามารถแก้ไขได้ด้วยฟังก์ชันใดก็ได้ คำสั่งใดๆ ที่เขียนในโปรแกรมสามารถเปลี่ยนค่าของตัวแปรโกลบอลได้ สิ่งนี้อาจให้ผลลัพธ์ที่คาดเดาไม่ได้ในสภาพแวดล้อมแบบมัลติทาสก์
  • หากตัวแปรโกลบอลถูกยกเลิกเนื่องจากการรีแฟคเตอร์โค้ด คุณจะต้องเปลี่ยนโมดูลทั้งหมดที่มีการเรียกตัวแปรเหล่านั้น

ข้อเสียของการใช้ตัวแปรท้องถิ่น

  • กระบวนการแก้ไขข้อบกพร่องของตัวแปรภายในเครื่องนั้นค่อนข้างยุ่งยาก
  • ข้อมูลทั่วไปที่ต้องส่งผ่านซ้ำๆ เนื่องจากไม่สามารถแบ่งปันข้อมูลระหว่างโมดูลได้
  • พวกเขามีขอบเขตที่จำกัดมาก

มีประโยชน์อะไรมากกว่ากัน?

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