Trong
lập trình máy tính,
tầm vực (tiếng Anh: scope) của một
ràng buộc tên – liên kết tên với một thực thể, ví dụ như
biến – là một vùng của
chương trình máy tính nơi liên kết hợp lệ: khi tên có thể được dùng để chỉ đến thực thể. Một khu vực như vậy được gọi là
khối tầm vực (scope block). Trong các phần khác của chương trình, tên có thể chỉ để các thực thể khác (nó có thể có ràng buộc khác), hay không có gì cả (nó có thể không bị ràng buộc).Phạm vi của một ràng buộc còn được gọi là
khả năng hiển thị (visibility) của một thực thể, đặc biệt trong các tài liệu kỹ thuật cũ hơn – điều này xuất phát từ quan điểm thực thể được tham chiếu, chứ không phải tên tham chiếu. Tầm vực là một phần của chương trình hoặc có thể là tầm vực cho một tập hợp các ràng buộc – một
định nghĩa chính xác rất khó, nhưng trong trường hợp thông thường và trong thực tế thường tương ứng với một
khối, một hàm, hay một tập tin, tùy thuộc vào ngôn ngữ và loại của thực thể. Thuật ngữ "tầm vực" cũng được sử dụng để chỉ tập hợp tất cả các thực thể có thể thấy được hay tên hợp lệ trong một phần của chương trình hoặc tại một thời điểm nhất định trong chương trình, mà thường được gọi chính xác hơn là ngữ cảnh (context) hay môi trường (environment).
[lower-alpha 1]Nói một cách chặt chẽ hơn
[lower-alpha 2] và trong thực tế với hầu hết các ngôn ngữ lập trình, "một phần của chương trình" đề cập đến "một phần của
mã nguồn (khu vực văn bản)", và được gọi là
tầm vực từ vựng (lexical scope). Tuy nhiên trong một số ngôn ngữ, "một phần chương trình" đề cập đến "một phần của thời gian chạy (khoảng thời gian trong khi thực thi)", và được gọi là
tầm vực động (dynamic scope). Cả hai thuật ngữ đó đều có chút sai lệch – chúng sử dụng sai thuật ngữ kỹ thuật, như đã thảo luận trong phần
định nghĩa – nhưng bản thân sự khác biệt là chính xác, và đó là những thuật ngữ tương ứng tiêu chuẩn. Tầm vực từ vựng là trọng tâm của bài viết này, với tầm vực động được hiểu là ngược lại với tầm vực từ vựng.Trong hầu hết các trường hợp,
phân giải tên (name resolution) dựa trên tầm vực từ vựng tương đối đơn giản để sử dụng và hiện thực, vì khi sử dụng người ta có thể đọc ngược mã nguồn để xác định thực thể nào mà tên chỉ đến, và khi hiện thực người ta có thể duy trì một danh sách các tên và ngữ cảnh khi biên dịch hay thông dịch một chương trình. Khó khăn phát sinh khi
name masking,
forward declaration, và
hoisting, trong khi những khó khăn đáng kể phát sinh với
biến phi cục bộ, đặc biệt trong
bao đóng.