Name binding

Association of data/code with an identifier in software


title: "Name binding" type: doc version: 1 created: 2026-02-28 author: "Wikipedia contributors" status: active scope: public tags: ["programming-language-concepts", "articles-with-example-java-code", "definition"] description: "Association of data/code with an identifier in software" topic_path: "general/programming-language-concepts" source: "https://en.wikipedia.org/wiki/Name_binding" license: "CC BY-SA 4.0" wikipedia_page_id: 0 wikipedia_revision_id: 0

::summary Association of data/code with an identifier in software ::

In computer programming, name binding is the association of a data or code entity with an identifier. An identifier bound to an entity is said to reference that entity. A machine language has no built-in notion of identifiers, but name-entity binding as a service and notation for the programmer is implemented by higher-level programming languages. Binding is intimately connected with scoping, as scope determines which names bind to which entities – at which locations in the program code (lexically) and in which one of the possible execution paths (temporally).

Use of an identifier in a context that establishes a binding for is called a binding (or defining) occurrence. In all other occurrences (e.g., in expressions, assignments, and subprogram calls), an identifier stands for what it is bound to; such occurrences are called applied occurrences.

Rebinding and mutation

Rebinding should not be confused with mutation or assignment. Rebinding is a change to the referencing identifier. Assignment is a change to (the referenced) variable. Mutation is a change to an entity in memory, possibly referenced by a variable or bound to an identifier.

Consider the following Java code:

::code[lang=java] import java.util.LinkedList;

LinkedList list; // implicitly initialised to 'null' list = new LinkedList<>(); list.add("foo"); list = null; { LinkedList list = new LinkedList<>(); list.add(2); } ::

The identifier list is bound to a variable in the first line; in the second, a linked list of strings is assigned to the variable. The linked list referenced by the variable is then mutated, adding a string to the list. Next, the variable is assigned the constant null. In the last line, the identifier is rebound for the scope of the block. Operations within the block access a new variable and not the variable previously bound to list.

References

ja:束縛 (情報工学) pt:Vinculação de nomes (computação)

References

  1. Microsoft. (May 11, 2007). "Using early binding and late binding in Automation". Microsoft.

::callout[type=info title="Wikipedia Source"] This article was imported from Wikipedia and is available under the Creative Commons Attribution-ShareAlike 4.0 License. Content has been adapted to SurfDoc format. Original contributors can be found on the article history page. ::

programming-language-conceptsarticles-with-example-java-codedefinition