This page tries to track ongoing documentation work in the MDN JavaScript section. Feel free to contribute!
Summary
Pages | No tags | Needs* tags | Missing tags | Editorial reviews | Technical reviews | Outdated pages | Dev-doc-needed bugs | Documentation requests |
---|---|---|---|---|---|---|---|---|
926 | 0 (0%) | 8 (1%) | 2 (1%) | 129 (14%) | 151 (17%) | 0 (0%) | 0 (0%) | 64 (7%) |
See also localization status of this section.
Needs* tags
Found 8 pages. Learn more about how to deal with meta-tags.
- NeedsExample
- NeedsBrowserCompatibility
- NeedsSpecTable
- NeedsLiveSample
- NeedsContent
- NeedsUpdate
Missing tags
At least missing one of the following: JavaScript
Found 2 pages. Learn more about how to tag pages.
Editorial reviews
Found 129 pages. Learn more about how to do an editorial review.
- JavaScript
- About JavaScript
- Closures
- Equality comparisons and sameness
- Inheritance and the prototype chain
- Introduction to using XPath in JavaScript
- Iterators and generators
- Keyed collections
- Assertions
- Boundaries
- Character Classes
- Groups and Ranges
- Quantifiers
- Unicode property escapes
- Working with objects
- JavaScript language resources
- Grouping operator
- Logical operators
- Object initializer
- delete operator
- Arrow function expressions
- Rest parameters
- Iteration protocols
- TypeError: "x" is not a function
- TypeError: "x" is read-only
- TypeError: X.prototype.y called on incompatible type
- TypeError: can't access property "x" of "y"
- TypeError: can't assign to property "x" on "y": not an object
- Lexical grammar
- Array.prototype.concat()
- Array.prototype.entries()
- Array.prototype.forEach()
- Array.prototype.indexOf()
- Array.prototype.reduce()
- Array.prototype.reduceRight()
- Array.prototype.sort()
- Array.prototype.values()
- Array.prototype[@@iterator]()
- ArrayBuffer
- Date
- Date.parse()
- Date.prototype.getTime()
- Date.prototype.setHours()
- Date.prototype.toString()
- Date.prototype.toUTCString()
- Function
- Function.caller
- Function.prototype.apply()
- Function.prototype.call()
- Generator
- Intl.DateTimeFormat.prototype.formatRange()
- Intl.DateTimeFormat.prototype.formatRangeToParts()
- Intl.ListFormat.prototype
- Intl.ListFormat.supportedLocalesOf()
- Intl.ListFormat.prototype.formatToParts()
- Intl.ListFormat.prototype.resolvedOptions()
- Intl.Locale.prototype
- Intl.Locale.prototype.baseName
- Intl.Locale.prototype.calendar
- Intl.Locale.prototype.caseFirst
- Intl.Locale.prototype.collation
- Intl.Locale.prototype.hourCycle
- Intl.Locale.prototype.language
- Intl.Locale.prototype.maximize()
- Intl.Locale.prototype.minimize()
- Intl.Locale.prototype.numberingSystem
- Intl.Locale.prototype.numeric
- Intl.Locale.prototype.region
- Intl.Locale.prototype.script
- Intl.Locale.prototype.toString()
- Map
- Math.hypot()
- Math.pow()
- Number.MAX_SAFE_INTEGER
- Number.prototype.toLocaleString()
- Object.assign()
- Object.create()
- Promise.prototype.catch()
- Promise.prototype.then()
- Promise.race()
- Promise.resolve()
- handler.apply()
- RegExp
- RegExp.prototype.dotAll
- Set.prototype.entries()
- Set.prototype.size
- Set.prototype.values()
- String.prototype.charAt()
- String.prototype.concat()
- String.prototype.replace()
- WebAssembly.Global
- WebAssembly.Global.prototype
- Statements and declarations
- break
- function*
- import
- import.meta
- try...catch
- Strict mode
- Template literals (Template strings)
- JavaScript shells
- Memory Management
- Microsoft JavaScript extensions
- @cc_on
- @if
- @set
- Date.getVarDate()
- Debug
- Debug.debuggerEnabled
- Debug.msTraceAsyncCallbackCompleted
- Debug.msTraceAsyncCallbackCompleted
- Debug.msTraceAsyncCallbackStarting
- Debug.msTraceAsyncOperationStarting
- Debug.msUpdateAsyncCallbackRelation
- Debug.setNonUserCodeExceptions
- Debug.write
- Enumerator
- Enumerator.atEnd
- Enumerator.item
- Enumerator.moveFirst
- Enumerator.moveNext
- Error.description
- Error.number
- Error.stackTraceLimit
- ScriptEngine()
- ScriptEngineBuildVersion
- ScriptEngineMajorVersion
- ScriptEngineMinorVersion
- New in JavaScript
Technical reviews
Found 151 pages. Learn more about how to do a technical review.
- Differential inheritance in JavaScript
- Enumerability and ownership of properties
- Equality comparisons and sameness
- Details of the object model
- Iterators and generators
- Regular Expressions
- Assertions
- Boundaries
- Character Classes
- Groups and Ranges
- Quantifiers
- Unicode property escapes
- Working with objects
- JavaScript data types and data structures
- extends
- Comma operator
- Destructuring assignment
- Operator precedence
- Optional chaining
- Spread syntax
- delete operator
- instanceof
- super
- yield
- Functions
- Rest parameters
- ReferenceError: "x" is not defined
- ReferenceError: reference to undefined property "x"
- SyntaxError: Unexpected token
- TypeError: "x" is (not) "y"
- TypeError: Reduce of empty array with no initial value
- TypeError: can't access property "x" of "y"
- TypeError: can't assign to property "x" on "y": not an object
- Lexical grammar
- Standard built-in objects
- Array.from()
- Array.prototype.concat()
- Array.prototype.entries()
- Array.prototype.every()
- Array.prototype.flat()
- Array.prototype.flatMap()
- Array.prototype.forEach()
- Array.prototype.includes()
- Array.prototype.some()
- Array.prototype.splice()
- Array.prototype.values()
- Date
- Date.now()
- Date.prototype.setDate()
- Date.prototype.toUTCString()
- Function
- Function.prototype.bind()
- Generator
- Generator.prototype.next()
- Infinity
- Intl.DateTimeFormat.prototype.formatRangeToParts()
- Intl.DateTimeFormat.prototype.resolvedOptions()
- Intl.ListFormat.prototype
- Intl.ListFormat.supportedLocalesOf()
- Intl.ListFormat.prototype.format()
- Intl.ListFormat.prototype.formatToParts()
- Intl.ListFormat.prototype.resolvedOptions()
- Intl.Locale.prototype
- Intl.Locale.prototype.baseName
- Intl.Locale.prototype.calendar
- Intl.Locale.prototype.caseFirst
- Intl.Locale.prototype.collation
- Intl.Locale.prototype.hourCycle
- Intl.Locale.prototype.language
- Intl.Locale.prototype.maximize()
- Intl.Locale.prototype.minimize()
- Intl.Locale.prototype.numberingSystem
- Intl.Locale.prototype.numeric
- Intl.Locale.prototype.region
- Intl.Locale.prototype.script
- Intl.Locale.prototype.toString()
- Intl.NumberFormat
- Intl.NumberFormat.prototype.resolvedOptions()
- Map
- Map.prototype
- Map.prototype[@@iterator]()
- Math.sqrt()
- Number.isInteger()
- Object.assign()
- Object.create()
- Object.getOwnPropertyDescriptor()
- Object.getOwnPropertyDescriptors()
- Object.keys()
- Object.prototype.hasOwnProperty()
- Object.prototype.valueOf()
- Promise.any()
- Promise.prototype.then()
- Promise.race()
- Promise.reject()
- Promise.resolve()
- Proxy
- Reflect.construct()
- RegExp
- RegExp.prototype.dotAll
- String length
- String.fromCharCode()
- String.fromCodePoint()
- String.prototype.charAt()
- String.prototype.concat()
- String.prototype.endsWith()
- String.prototype.includes()
- String.prototype.localeCompare()
- String.prototype.repeat()
- String.prototype.split()
- String.prototype.substr()
- Symbol
- Symbol.asyncIterator
- TypedArray.prototype.reduce()
- TypedArray.prototype.slice()
- WebAssembly.Global
- WebAssembly.Global.prototype
- encodeURIComponent()
- escape()
- null
- break
- for
- for await...of
- Strict mode
- Microsoft JavaScript extensions
- @cc_on
- @if
- @set
- ActiveXObject
- Date.getVarDate()
- Debug
- Debug.debuggerEnabled
- Debug.msTraceAsyncCallbackCompleted
- Debug.msTraceAsyncCallbackCompleted
- Debug.msTraceAsyncCallbackStarting
- Debug.msTraceAsyncOperationStarting
- Debug.msUpdateAsyncCallbackRelation
- Debug.write
- Debug.writeln
- Enumerator
- Enumerator.atEnd
- Enumerator.item
- Enumerator.moveFirst
- Enumerator.moveNext
- Error.description
- Error.number
- Error.stackTraceLimit
- ScriptEngine()
- ScriptEngineBuildVersion
- ScriptEngineMajorVersion
- ScriptEngineMinorVersion
- New in JavaScript 1.8.1
Documentation requests
Found 64 bugs. Documentation request bugs can contain various kinds work related to MDN pages. Read through the bug and ask questions in the bug if in doubt.
Bug | Summary |
---|---|
1179881 | Write a JS error reference |
1201380 | Examples and text don't match up in "details of the object model" page |
1204224 | Unclear explanation in "Working With Objects" tutorial |
1238394 | Improve Regex docs for capturing groups |
1243496 | The function declaration and function expression documentation is incorrect |
1245977 | MathML fallback: square root is not displayed correctly |
1275816 | Explain how |this| value is calculated in call expression, and the difference between `foo[prop]()` and `func = foo[prop], func()` |
1281696 | iterating with let in for-loops |
1294338 | charCodeAt and codePointAt in String documentation seem almost backwards |
1301501 | polyfill uses != to check typeof assign to "function" vs !== |
1303603 | Clarify that RegExp.prototype.exec() returns a special array |
1305261 | Async Functions/Await Documentation |
1309784 | Add Cyclomatic Complexity |
1318620 | Slightly misleading example |
1318933 | Description of `Object.keys` outdated because it does not return symbol keys |
1322844 | Tagged template literals example does not illustrate point being made |
1324194 | Incorrect description for example summary found on array.prototype.filter() page (JSON example) |
1325251 | The Math.sign() polyfill contains two type conversions |
1334000 | Polyfill example does not detect NaN |
1343142 | Clarify that Array.prototype.sort() sorts in increasing order |
1346500 | The result of the polyfill doesn't meet the result of firefox. |
1347496 | Inaccurate information in a code snippet |
1357343 | Console.table example does not work as expected |
1359860 | Make /W special character regex more clear |
1360102 | About the global property with "var" in MDN. |
1360661 | Document for Array.from provides a polyfill that cannot create array from a Set |
1361299 | mixin replace jQuery.extend with Object.assign |
1363684 | tip faster js offsetwith |
1365288 | Map.get/set documentation is lacking information |
1367757 | Should String.prototype.substr be marked as deprecated? |
1371716 | Syntax example provided is incomplete / incorrect |
1372019 | Filter the javascript docs on ES version support |
1372390 | Promise.all returns already-resolved promises for any combination of non-promises and resolved promises. |
1374016 | A consistency issue: different parts of MDN have links where in other parts they're buttons |
1376223 | "Promise" Advance Example CodePen Has a Bug |
1385876 | Threading coverage on MDN |
1389206 | I would like to contribue to progrssive apps section by adding a new sub-article about how to build progressive apps with Angular 2+ |
1394123 | Property Accessors: No mention of what happens when a property is not present on an object |
1394569 | Array.prototype.filter polyfill compares result of typeof operator to "Function" instead of "function" |
1395257 | JS sidebar macros don't interact well with A/B testing framework |
1398923 | Migrate static sample code in /samples/domref/dispatch.html to be "live" |
1401192 | List support for proper stacktrace in the compat table. |
1401753 | Promise, advanced example, code comment incorrect |
1405611 | Create a page on property descriptors and flags |
1408616 | Re-Introduction to JavaScript - Functions: hiding local variables |
1408621 | Re-Introduction to JavaScript - Functions: confusing use of fullName(); |
1408998 | More examples in Array.prototype.reduce |
1411233 | Document XMLHttpRequestEventTarget.ontimeout |
1412101 | Discussion of "boolean operator" should be clarified or deleted |
1415201 | Update documentation for missing semicolon. |
1419710 | Array.prototype.sort confusing |
1424040 | Add glossary entries for weak and strong references; update WeakMap and WeakSet docs to link to them |
1447921 | Indexed collections Array class doesn't have static method forEach. prototype does |
1456933 | add error page for "allocation size overflow" |
1472714 | JS Guide: Asynchronous programming |
1476207 | I've written a cheat sheet for Javascript with active links toMDN pages |
1476511 | The sourceopen event (MediaSource API) is not documented |
1484772 | MDN: Promise.all() : Information about sync/a-sync resolution possibly irrelevant |
1487930 | Language Feedback directly in Mozilla |
1494076 | In page "Función async" redirection for AsyncFunction documentation (spanish page) ends up in 404 |
1494936 | Permissions.query browser compatibility table |
1500472 | Template literals: formatting output? |
1500851 | resetParas 不一致 |
1503571 | Description of parseFloat incorrect |
Browse as bug list.
Localizations
Please help us to localize this documentation into different languages. Read more about how to translate.
Language | Pages | Translated | Translations up to date |
---|---|---|---|
bn | 873 | 36 (4%) | 3 (8%) |
ca | 873 | 318 (36%) | 45 (14%) |
de | 873 | 578 (66%) | 270 (46%) |
es | 873 | 461 (52%) | 106 (22%) |
fa | 873 | 28 (3%) | 3 (10%) |
fr | 926 | 921 (99%) | 714 (77%) |
id | 873 | 117 (13%) | 10 (8%) |
it | 873 | 179 (20%) | 34 (18%) |
ja | 132 | 79 (59%) | 22 (27%) |
kab | 873 | 2 (0%) | 0 (0%) |
ko | 919 | 529 (57%) | 169 (31%) |
nl | 873 | 70 (8%) | 7 (10%) |
pl | 873 | 324 (37%) | 33 (10%) |
pt-BR | 873 | 421 (48%) | 83 (19%) |
pt-PT | 873 | 71 (8%) | 11 (15%) |
ru | 922 | 688 (74%) | 226 (32%) |
uk | 925 | 319 (34%) | 169 (52%) |
vi | 880 | 101 (11%) | 24 (23%) |
zh-CN | 921 | 812 (88%) | 261 (32%) |
Structure of the MDN JavaScript docs
# | Chapter | Pages | Priority | Notes |
---|---|---|---|---|
0 | Value & function properties in the global scope | 16 | 1 | Complete. |
1 | Object | 40 | 1 |
Complete. |
2 | Function | 14 | 1 | Complete. |
3 | Array | 38 | 1 | Complete. |
4 | String | 50 | 1 | Complete. |
5 | Boolean | 5 | 1 | Complete. |
6 | Number | 24 | 1 |
Complete. |
7 | Math | 44 | 1 | Complete. |
8 | Date | 53 | 1 | Complete. |
9 | RegExp | 21 | 1 | Complete. |
10 |
Error |
24 | 4 | Complete. |
11 | JSON | 3 | 1 | Complete. |
12 | Intl Intl.Collator Intl.DateTimeFormat Intl.NumberFormat |
16 | 2 | Complete. |
13 | Map | 13 | 2 | Complete. |
14 | WeakMap | 7 | 2 | Complete. |
15 | Set | 11 | 2 | Complete. |
16 | WeakSet | 6 | 2 | Complete. |
17 | Proxy | 17 | 3 | Complete. |
18 | Reflect | 15 | 3 | Complete. |
19 | Generator (legacy and ES2015) Iterator StopIteration GeneratorFunction |
8 | 2 | Complete. |
20 | ArrayBuffer (6)DataView (21)TypedArray (34 [+ 3])Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray |
73 | 2 | Missing pages:
|
21 | Promise | 8 | 1 | Complete. |
22 | Symbol | 9 | 2 |
Missing pages:
|
23 | ParallelArray | 1 | 5 | Complete. |
24 | Atomics SharedArrayBuffer |
17 | 4 | Preffed off. Spec in flux. |
25 | Expressions & Operators | 29 | 1 | Complete. |
26 | Statements & Declarations | 27 | 1 | Complete. |
27 | Functions | 11 | 1 |
Complete. |
28 | Classes | 4 | 1 | Complete. |
29 | JavaScript Guide | 15 | 1 |
|
30 | New in JavaScript | 15 | 4 |
Complete. |
31 | JavaScript error reference | 36 | 3 | Explains error messages (v8, Chakra). So those people searching for errors will find guidance. |
32 | Articles/Tutorials/Misc | 17 |
3 |
|
33 | Meta pages | 9 | 4 |
Other tasks to do
- Go through Firefox release notes for developers and site compat notes and make sure JS changes are documented properly in the references.
- Make sure our compat tables are up to date by also going through bug trackers of other open source browsers (e.g. WebKit, Blink)
- Write a changelog for Chrome JavaScript releases like we have for Firefox. Same for other browsers/node.js?
- Meta article about how to document in the JS MDN area.
- Write more JavaScript error documentation: the list of errors which have no mdn pages link corresponds to SpiderMonkey error code which are reported to the devtool console which do not have any corresponding MDN pages.
Tagging standard
- Pages in the JavaScript/ page tree should at least have the tag "JavaScript".
- For methods belonging to an object, the name of the Object should be added (e.g.
String.fromCharCode
should have "String"). - Methods should have "Method" and properties need a "Property" tag. All prototype members have the "prototype" tag.
- Features added in a new ECMAScript version have the tags "ECMAScript6" and "ECMAScript 2015" or later versions/years.
- The Experimental tag should only be used with new features where the standard is not yet finalized (e.g. in a strawman proposal) and the feature is in a Nightly version or behind a preference.
- Features are Deprecated if their usage is discouraged and are Obsolete if they have been removed from engines.
- If pages need any type of work, a "Needs*" tag should be added (see above).
Specifications
The following specifications are taken under consideration for this project:
Specification | Status |
---|---|
ECMAScript 1st Edition (ECMA-262) | Standard |
ECMAScript 3rd Edition (ECMA-262) | Standard |
ECMAScript 5.1 (ECMA-262) | Standard |
ECMAScript 2015 (6th Edition, ECMA-262) | Standard |
ECMAScript 2016 (ECMA-262) | Standard |
ECMAScript 2017 (ECMA-262) | Standard |
ECMAScript 2018 (ECMA-262) | Standard |
ECMAScript Latest Draft (ECMA-262) | Draft |
ECMAScript Internationalization API 1.0 (ECMA-402) | Standard |
ECMAScript Internationalization API 2.0 (ECMA-402) | Standard |
ECMAScript Internationalization API 4.0 (ECMA-402) | Draft |
ECMAScript Proposals (with advanced stage and at least 1 implementation) | Draft |