Skip to content

Commit

Permalink
Editorial: Add BigInt to the list of primitive values (tc39#1769)
Browse files Browse the repository at this point in the history
  • Loading branch information
chicoxyzzy authored and ljharb committed Nov 8, 2019
1 parent 17ff6d5 commit d1b6707
Showing 1 changed file with 17 additions and 2 deletions.
19 changes: 17 additions & 2 deletions spec.html
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,7 @@ <h1>Web Scripting</h1>
<emu-clause id="sec-ecmascript-overview">
<h1>ECMAScript Overview</h1>
<p>The following is an informal overview of ECMAScript&mdash;not all parts of the language are described. This overview is not part of the standard proper.</p>
<p>ECMAScript is object-based: basic language and host facilities are provided by objects, and an ECMAScript program is a cluster of communicating objects. In ECMAScript, an <em>object</em> is a collection of zero or more <em>properties</em> each with <em>attributes</em> that determine how each property can be used&mdash;for example, when the Writable attribute for a property is set to *false*, any attempt by executed ECMAScript code to assign a different value to the property fails. Properties are containers that hold other objects, <em>primitive values</em>, or <em>functions</em>. A primitive value is a member of one of the following built-in types: <b>Undefined</b>, <b>Null</b>, <b>Boolean</b>, <b>Number</b>, <b>String</b>, and <b>Symbol;</b> an object is a member of the built-in type <b>Object</b>; and a function is a callable object. A function that is associated with an object via a property is called a <em>method</em>.</p>
<p>ECMAScript is object-based: basic language and host facilities are provided by objects, and an ECMAScript program is a cluster of communicating objects. In ECMAScript, an <em>object</em> is a collection of zero or more <em>properties</em> each with <em>attributes</em> that determine how each property can be used&mdash;for example, when the Writable attribute for a property is set to *false*, any attempt by executed ECMAScript code to assign a different value to the property fails. Properties are containers that hold other objects, <em>primitive values</em>, or <em>functions</em>. A primitive value is a member of one of the following built-in types: <b>Undefined</b>, <b>Null</b>, <b>Boolean</b>, <b>Number</b>, <b>BigInt</b>, <b>String</b>, and <b>Symbol;</b> an object is a member of the built-in type <b>Object</b>; and a function is a callable object. A function that is associated with an object via a property is called a <em>method</em>.</p>
<p>ECMAScript defines a collection of <em>built-in objects</em> that round out the definition of ECMAScript entities. These built-in objects include the global object; objects that are fundamental to the runtime semantics of the language including `Object`, `Function`, `Boolean`, `Symbol`, and various `Error` objects; objects that represent and manipulate numeric values including `Math`, `Number`, and `Date`; the text processing objects `String` and `RegExp`; objects that are indexed collections of values including `Array` and nine different kinds of Typed Arrays whose elements all have a specific numeric data representation; keyed collections including `Map` and `Set` objects; objects supporting structured data including the `JSON` object, `ArrayBuffer`, `SharedArrayBuffer`, and `DataView`; objects supporting control abstractions including generator functions and `Promise` objects; and reflection objects including `Proxy` and `Reflect`.</p>
<p>ECMAScript also defines a set of built-in <em>operators</em>. ECMAScript operators include various unary operations, multiplicative operators, additive operators, bitwise shift operators, relational operators, equality operators, binary bitwise operators, binary logical operators, assignment operators, and the comma operator.</p>
<p>Large ECMAScript programs are supported by <em>modules</em> which allow a program to be divided into multiple sequences of statements and declarations. Each module explicitly identifies declarations it uses that need to be provided by other modules and which of its declarations are available for use by other modules.</p>
Expand Down Expand Up @@ -193,7 +193,7 @@ <h1>type</h1>

<emu-clause id="sec-primitive-value">
<h1>primitive value</h1>
<p>member of one of the types Undefined, Null, Boolean, Number, Symbol, or String as defined in clause <emu-xref href="#sec-ecmascript-data-types-and-values"></emu-xref></p>
<p>member of one of the types Undefined, Null, Boolean, Number, BigInt, Symbol, or String as defined in clause <emu-xref href="#sec-ecmascript-data-types-and-values"></emu-xref></p>
<emu-note>
<p>A primitive value is a datum that is represented directly at the lowest level of the language implementation.</p>
</emu-note>
Expand Down Expand Up @@ -342,6 +342,21 @@ <h1>NaN</h1>
<p>number value that is an IEEE 754-2008 &ldquo;Not-a-Number&rdquo; value</p>
</emu-clause>

<emu-clause id="sec-terms-and-definitions-bigint-value">
<h1>BigInt value</h1>
<p>primitive value corresponding to an arbitrary-precision integer value</p>
</emu-clause>

<emu-clause id="sec-terms-and-definitions-bigint-type">
<h1>BigInt type</h1>
<p>set of all possible BigInt values</p>
</emu-clause>

<emu-clause id="sec-bigint-object">
<h1>BigInt object</h1>
<p>member of the Object type that is an instance of the standard built-in `BigInt` constructor</p>
</emu-clause>

<emu-clause id="sec-symbol-value">
<h1>Symbol value</h1>
<p>primitive value that represents a unique, non-String Object property key</p>
Expand Down

0 comments on commit d1b6707

Please sign in to comment.