## com.google.javascript.jscomp
Class Scope

    java.lang.Object
      com.google.javascript.jscomp.Scope

All Implemented Interfaces:
  StaticScope<JSType>, StaticSymbolTable<Scope.Var,Scope.Var>

    public class Scope

extends Object
implements StaticScope<JSType>, StaticSymbolTable<Scope.Var,Scope.Var>

Scope contains information about a variable scope in javascript. Scopes can be nested, a scope points back to its parent scope. A Scope contains information about variables defined in that scope.

A Scope is also used as a lattice element for flow-sensitive type inference. As a lattice element, a Scope is viewed as a map from names to types. A name not in the map is considered to have the bottom type. The join of two maps m1 and m2 is the map of the union of names with `JSType.getLeastSupertype(com.google.javascript.rhino.jstype.JSType)` to meet the m1 type and m2 type.

See Also:
  `NodeTraversal`, `DataFlowAnalysis`

Nested Class Summary
`static class` | `Scope.Arguments` A special subclass of Var used to distinguish "arguments" in the current scope.
`static class` | `Scope.Var` Stores info about a variable

Method Summary
`Iterable<Scope.Var>` | `getAllSymbols()` Returns all variables in this symbol table.
`Scope.Var` | `getArgumentsVar()` Get a unique VAR object to represents "arguments" within this scope
`Iterator<Scope.Var>` | `getDeclarativelyUnboundVarsWithoutTypes()` Gets all variables declared with "var" but without declared types attached.
`StaticSlot<JSType>` | `getOwnSlot(String name)` Like `getSlot` but does not recurse into parent scopes.
`Scope` | `getParent()`
`StaticScope<JSType>` | `getParentScope()` Returns the scope enclosing this one or null if none.
`Iterable<Scope.Var>` | `getReferences(Scope.Var var)` Returns the references that point to the given symbol.
`Node` | `getRootNode()` Gets the container node of the scope.
`StaticScope<JSType>` | `getScope(Scope.Var var)` Returns the scope for a given symbol.
`StaticSlot<JSType>` | `getSlot(String name)` Returns any defined slot within this scope for this name.
`ObjectType` | `getTypeOfThis()` Gets the type of `this` in the current scope.
`Scope.Var` | `getVar(String name)` Returns the variable, may be null
`int` | `getVarCount()` Returns number of variables in this scope
`Iterator<Scope.Var>` | `getVars()` Return an iterator over all of the variables declared in this scope.
`boolean` | `isDeclared(String name, boolean recurse)` Returns true if a variable is declared.
`boolean` | `isGlobal()` Returns whether this is the global scope.
`boolean` | `isLocal()` Returns whether this is a local scope (i.e.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Method Detail

### getRootNode

    public Node getRootNode()

  Gets the container node of the scope. This is typically the FUNCTION node or the global BLOCK/SCRIPT node.

  Specified by:
    `getRootNode` in interface `StaticScope<JSType>`

### getParent

    public Scope getParent()

### getParentScope

    public StaticScope<JSType> getParentScope()

  Description copied from interface: `StaticScope`
  Returns the scope enclosing this one or null if none.

  Specified by:
    `getParentScope` in interface `StaticScope<JSType>`

### getTypeOfThis

    public ObjectType getTypeOfThis()

  Gets the type of `this` in the current scope.

  Specified by:
    `getTypeOfThis` in interface `StaticScope<JSType>`

### getSlot

    public StaticSlot<JSType> getSlot(String name)

  Description copied from interface: `StaticScope`
  Returns any defined slot within this scope for this name. This call continues searching through parent scopes if a slot with this name is not found in the current scope.

  Specified by:
    `getSlot` in interface `StaticScope<JSType>`
  Parameters:
    `name` - The name of the variable slot to look up.
  Returns:
    The defined slot for the variable, or `null` if no definition exists.

### getOwnSlot

    public StaticSlot<JSType> getOwnSlot(String name)

  Description copied from interface: `StaticScope`
  Like `getSlot` but does not recurse into parent scopes.

  Specified by:
    `getOwnSlot` in interface `StaticScope<JSType>`

### getVar

    public Scope.Var getVar(String name)

  Returns the variable, may be null

### getArgumentsVar

    public Scope.Var getArgumentsVar()

  Get a unique VAR object to represents "arguments" within this scope

### isDeclared

    public boolean isDeclared(String name,
                              boolean recurse)

  Returns true if a variable is declared.

### getVars

    public Iterator<Scope.Var> getVars()

  Return an iterator over all of the variables declared in this scope.

### getReferences

    public Iterable<Scope.Var> getReferences(Scope.Var var)

  Description copied from interface: `StaticSymbolTable`
  Returns the references that point to the given symbol.

  Specified by:
    `getReferences` in interface `StaticSymbolTable<Scope.Var,Scope.Var>`

### getScope

    public StaticScope<JSType> getScope(Scope.Var var)

  Description copied from interface: `StaticSymbolTable`
  Returns the scope for a given symbol.

  Specified by:
    `getScope` in interface `StaticSymbolTable<Scope.Var,Scope.Var>`

### getAllSymbols

    public Iterable<Scope.Var> getAllSymbols()

  Description copied from interface: `StaticSymbolTable`
  Returns all variables in this symbol table.

  Specified by:
    `getAllSymbols` in interface `StaticSymbolTable<Scope.Var,Scope.Var>`

### getVarCount

    public int getVarCount()

  Returns number of variables in this scope

### isGlobal

    public boolean isGlobal()

  Returns whether this is the global scope.

### isLocal

    public boolean isLocal()

  Returns whether this is a local scope (i.e. not the global scope).

### getDeclarativelyUnboundVarsWithoutTypes

    public Iterator<Scope.Var> getDeclarativelyUnboundVarsWithoutTypes()

  Gets all variables declared with "var" but without declared types attached.