I am a personal believer in the supreme importance of a shared vocabulary among collaborators on any project in any field. The first step in any project is understanding how to communicate about the problem and communicate details of the problem itself. For the general domain of problems being solved with ECMAScript, it would be nice to have a vocabulary that exists outside of the group with whom you work most closely. For this reason, I've been trying to use a consistent and unambiguous vocabulary when discussing issues in OSS projects I like to work on for... years. But I don't feel this is enough. So I've taken the time to start formally defining a vocabulary that can be shared among all developers working on ECMAScript projects. It's nowhere near comprehensive yet, so feel free to open up an issue. If you work on ECMAScript projects, try to adopt these terms into your own vocabulary, and use them when speaking with your team. Hopefully we can foster an environment where communicating with people you've never worked with becomes at least a little bit easier.
- apply
- See function application.
- argument [list]
- An expression (or comma-separated list of expressions) provided to a function during function application.
- callable
- An object is callable if it implements the internal
[[Call]]
method and therefore may be applied. All functions are callable. - call
- See function application.
- class
- Has no meaning in ECMAScript (as of ES5). In CoffeeScript, "class" refers to a constructor that was defined using a special syntactic form.
- CoffeeScript
- A programming language that shares many of its semantics with ECMAScript.
- constructor
- An object (almost always a function) with an internal
[[Construct]]
method and "prototype" property that is intended to be used as the prototype of another object. This can be done either through use of thenew
operator (in which case the constructor will be applied) or throughObject.create
. - constructor method
- A method of a constructor.
- constructor property
- A property of a constructor.
- context
- The value of
this
. - cyclic object
- An object that cannot be modeled as a DAG because of the possibility of a series of one or more member accesses creating a cycle. See also cyclic object.
- declared
- An identifier is declared if a lookup in the scope chain would be successful. In other words, a bare reference to it (outside
typeof
) will not cause aReferenceError
to be thrown. The identifier need not enter scope through a variable declaration; parameter names, NFE name, FD names, and property assignment of any member of the scope chain will all cause an identifier to be declared. - defined
- See undefined.
- dynamic member access
- A member access performed using the postfix
[]
syntactic form. May not qualify as "dynamic" if the value used within[]
is able to be statically determined. - ES3
- ECMAScript, as defined in version 3.
- ES5
- ECMAScript, as defined in version 5. Often used to refer to the latest revision, currently 5.1.
- eval
- evil
- falsey
- Any expression that evaluates to a member of the set {
undefined
value,null
,false
,0
,-0
,NaN
value,""
}. - FD
- See function declaration.
- function application
- Causing a callable object to execute with a given argument list.
- function call
- See function application.
- function declaration
- A named function expression in statement position.
- function expression
- A function literal in expression position. May or may not be named.
- function invocation
- See function application.
- global
- A property of the gobal object.
- [the] global object
- A special object that serves as the root of every scope chain and the context of code executed in the global environment (outside any function body).
- hoisting
- The treatment of a statement within a lexical environment as if it had prefixed the non-hoisted statements. In ECMAScript, variable declarations (without their optional initialisations) and function declarations are hoisted.
- IIFE
- See immediately-invoked function expression.
- immediately-invoked function expression
- A function expression used as the target of function application.
- Infinity value
1/0
- inherited property
- A property that does not exist on the object being described, but on one of the objects in its prototype chain. Not an own property.
- invoke
- See function application.
- JavaScript
- A superset of ECMAScript, designed and implemented by Mozilla.
- member
- An object member, which is a mapping from a string to some value. The member may exist on the object itself or any of the objects in its prototype chain.
- member access
- A property lookup via either the infix
.
or postfix[]
operators. - method
- A property that is also a function. Those wishing to refer to the superset of methods that is callable properties should use that more explicit term instead.
- named function expression
- A function expression that must have a name.
- NaN value
0/0
- NFE
- See named function expression.
- parameter [list]
- An identifier (or comma-separated list of identifiers) used in the definition of a function. At runtime, the value of each parameter becomes the value that coordinates positionally with the argument list given during function application.
- own property
- A property that exists on the object being described. Not an inherited property.
- property
- See member.
- truthy
- Any expression that is not falsey.
- undefined
- An unfortunately ambiguous term; instead, use undeclared or "
undefined
value". - undefined value
- A special value which is the initial value of the "undefined" property of the global object. This value is the same one created by applying a function that reaches the end of its execution without arriving at a
return
statement or performing a member access on an object where neither it nor the objects in its prototype chain contain the member. - unnamed function expression
- A function expression that must not have a name.