Skip to content

michaelficarra/ECMAScript-Glossary

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 

Repository files navigation

A shared vocabulary for people who need to talk about ECMAScript.

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.

Glossary

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 the new operator (in which case the constructor will be applied) or through Object.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 a ReferenceError 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.

About

🔣 A shared vocabulary for people who need to talk about ECMAScript

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published