Trong hướng dẫn này, bạn sẽ học về sự khác biệt giữa biến cục bộ và biến toàn cục và: 

Biến là gì?

Biến là tên được gán cho một vùng lưu trữ mà chương trình có thể thao tác. Một kiểu biến xác định kích thước và cách bố trí bộ nhớ của biến.

Nó cũng xác định phạm vi giá trị cần được lưu trữ bên trong bộ nhớ đó và bản chất của các hoạt động có thể được áp dụng cho biến đó.

Phạm vi của các biến

Phạm vi của biến chỉ đơn giản là thời gian tồn tại của một biến. Nó là khối mã mà theo đó một biến có thể áp dụng hoặc tồn tại. Ví dụ:

function foo () {
var x;
}

Bạn khai báo một biến “x” bên trong một hàm “foo.” Phạm vi của biến đó vẫn ở bên trong hàm đó, nó không thể được sử dụng bên ngoài hàm đó.

Có ba nơi mà bạn có thể khai báo ngôn ngữ lập trình biến:

  • Bên trong một hàm hoặc một khối: Các biến cục bộ
  • Bên ngoài tất cả các hàm: Biến toàn cục
  • Trong định nghĩa của tham số hàm: Tham số chính thức

Sự khác biệt giữa biến cục bộ và biến toàn cục

  • Biến cục bộ được khai báo bên trong một hàm trong khi biến Toàn cục được khai báo bên ngoài hàm.
  • Biến cục bộ được tạo khi hàm bắt đầu thực thi và bị mất khi hàm kết thúc, mặt khác, biến toàn cục được tạo khi bắt đầu thực thi và bị mất khi chương trình kết thúc.
  • Biến cục bộ không cung cấp chia sẻ dữ liệu trong khi biến Toàn cầu cung cấp chia sẻ dữ liệu.
  • Các biến cục bộ được lưu trữ trên ngăn xếp trong khi biến Toàn cục được lưu trữ trên một vị trí cố định do trình biên dịch quyết định.
  • Truyền tham số là bắt buộc đối với các biến cục bộ trong khi không cần thiết đối với biến toàn cục

Biến cục bộ

Biến cục bộ được định nghĩa là một loại biến được khai báo trong khối lập trình hoặc các chương trình con. Nó chỉ có thể được sử dụng bên trong chương trình con hoặc khối mã mà nó được khai báo. Biến cục bộ tồn tại cho đến khi khối của hàm đang được thực thi. Sau đó, nó sẽ tự động bị phá hủy.

Ví dụ về Biến cục bộ

public int add () {
int a = 4;
int b = 5;
trả về a + b;
}

Ở đây, ‘a’ và ‘b’ là các biến cục bộ

Biến toàn cầu

Một biến toàn cục trong chương trình là một biến được định nghĩa bên ngoài chương trình con hoặc hàm. Nó có phạm vi toàn cầu có nghĩa là nó giữ giá trị của nó trong suốt thời gian tồn tại của chương trình. Do đó, nó có thể được truy cập trong suốt chương trình bởi bất kỳ chức năng nào được xác định trong chương trình, trừ khi nó bị che khuất.

Thí dụ:

int a = 4;
int b = 5;
public int add () {
trả về a + b;
}

Ở đây, ‘a’ và ‘b’ là các biến toàn cục.

Sự khác biệt giữa biến cục bộ và biến toàn cục

Tham số Địa phương Toàn cầu

Phạm vi

Nó được khai báo bên trong một hàm. Nó được khai báo bên ngoài hàm.
Giá trị Nếu nó không được khởi tạo, một giá trị rác sẽ được lưu trữ Nếu nó không được khởi tạo, số không được lưu trữ như mặc định.
Cả đời Nó được tạo ra khi hàm bắt đầu thực thi và bị mất khi các hàm kết thúc. Nó được tạo trước khi quá trình thực thi toàn cục của chương trình bắt đầu và bị mất khi chương trình kết thúc.
Chia sẻ dữ liệu Không thể chia sẻ dữ liệu vì dữ liệu của biến cục bộ chỉ có thể được truy cập bởi một hàm. Có thể chia sẻ dữ liệu vì nhiều hàm có thể truy cập vào cùng một biến toàn cục.

Thông số

Truyền tham số là bắt buộc đối với các biến cục bộ để truy cập giá trị trong hàm khác Việc truyền tham số là không cần thiết đối với một biến toàn cục vì nó có thể nhìn thấy trong suốt chương trình
Sửa đổi giá trị biến Khi giá trị của biến cục bộ được sửa đổi trong một hàm, các thay đổi sẽ không hiển thị trong một hàm khác. Khi giá trị của biến toàn cục được sửa đổi trong một hàm, các thay đổi của hàm sẽ hiển thị trong phần còn lại của chương trình.
Được truy cập bởi Các biến cục bộ có thể được truy cập với sự trợ giúp của các câu lệnh, bên trong một hàm mà chúng được khai báo. Bạn có thể truy cập các biến toàn cục bằng bất kỳ câu lệnh nào trong chương trình.
Bộ nhớ lưu trữ Nó được lưu trữ trên ngăn xếp trừ khi được chỉ định. Nó được lưu trữ trên một vị trí cố định do trình biên dịch quyết định.

Ưu điểm của việc sử dụng các biến Toàn cục

  • Bạn có thể truy cập biến toàn cục từ tất cả các hàm hoặc mô-đun trong một chương trình
  • Bạn chỉ yêu cầu khai báo biến toàn cục thời gian duy nhất bên ngoài mô-đun.
  • Nó được sử dụng lý tưởng để lưu trữ “hằng số” vì nó giúp bạn giữ được tính nhất quán.
  • Biến Global hữu ích khi nhiều hàm đang truy cập vào cùng một dữ liệu.

Ưu điểm của việc sử dụng Biến cục bộ

  • Sử dụng các biến cục bộ cung cấp một đảm bảo giá trị của biến nguyên vẹn trong khi tác vụ đang chạy
  • Nếu một số tác vụ thay đổi một biến duy nhất đang chạy đồng thời. Thì kết quả có thể không thể đoán trước được. Nhưng việc khai báo nó là biến cục bộ sẽ giải quyết được vấn đề này. Vì mỗi tác vụ sẽ tạo phiên bản riêng của biến cục bộ.
  • Bạn có thể đặt cùng tên cho các biến cục bộ trong các hàm khác nhau. Vì chúng chỉ được công nhận bởi hàm mà chúng được khai báo.
  • Các biến cục bộ sẽ bị xóa ngay khi bất kỳ chức năng nào kết thúc và giải phóng không gian bộ nhớ mà nó chiếm.

Nhược điểm của việc sử dụng Biến toàn cục

  • Quá nhiều biến được khai báo là toàn cục, sau đó chúng vẫn còn trong bộ nhớ cho đến khi hoàn thành việc thực thi chương trình. Điều này có thể gây ra sự cố Hết bộ nhớ.
  • Dữ liệu có thể được sửa đổi bởi bất kỳ chức năng nào. Bất kỳ câu lệnh nào được viết trong chương trình đều có thể thay đổi giá trị của biến toàn cục. Điều này có thể cho kết quả không thể đoán trước trong môi trường đa tác vụ.
  • Nếu các biến toàn cục bị ngừng do cấu trúc lại mã, bạn sẽ cần phải thay đổi tất cả các mô-đun nơi chúng được gọi.

Nhược điểm của việc sử dụng Biến cục bộ

  • Quá trình gỡ lỗi của một biến cục bộ khá phức tạp.
  • Dữ liệu chung được yêu cầu chuyển nhiều lần vì không thể chia sẻ dữ liệu giữa các mô-đun.
  • Chúng có một phạm vi rất hạn chế.

Điều gì là hữu ích hơn?

Biến cục bộ và toàn cục quan trọng như nhau trong khi viết chương trình bằng bất kỳ ngôn ngữ nào. Tuy nhiên, một số lượng lớn biến toàn cục có thể chiếm một bộ nhớ lớn. Một thay đổi không mong muốn đối với các biến toàn cục trở nên khó xác định. Do đó, nên tránh khai báo các biến toàn cục không mong muốn.

Tham khảo thêm: 15 cuốn sách kỹ thuật phần mềm hay nhất.