| ARعربي | https://ar.javascript.info/ |
| ENEnglish | https://javascript.info/ |
| ESEspañol | https://es.javascript.info/ |
| FAفارسی | https://fa.javascript.info/ |
| FRFrançais | https://fr.javascript.info/ |
| IDIndonesia | https://id.javascript.info/ |
| ITItaliano | https://it.javascript.info/ |
| JA日本語 | https://ja.javascript.info/ |
| KO한국어 | https://ko.javascript.info/ |
| RUРусский | https://learn.javascript.ru/ |
| TRTürkçe | https://tr.javascript.info/ |
| UKУкраїнська | https://uk.javascript.info/ |
| UZOʻzbek | https://uz.javascript.info/ |
| ZH简体中文 | https://zh.javascript.info/ |
| Help to translate | https://javascript.info/translate |
| https://javascript.info/ |
| BuyEPUB/PDF | https://javascript.info/ebook |
| Tutorial map | https://javascript.info/tutorial/map |
| https://twitter.com/share?url=https%3A%2F%2Fjavascript.info%2F |
| https://www.facebook.com/sharer/sharer.php?s=100&p%5Burl%5D=https%3A%2F%2Fjavascript.info%2F |
| BuyEPUB/PDF | https://javascript.info/ebook |
| https://twitter.com/share?url=https%3A%2F%2Fjavascript.info%2F |
| https://www.facebook.com/sharer/sharer.php?s=100&p%5Burl%5D=https%3A%2F%2Fjavascript.info%2F |
| 25054 ★github | https://github.com/javascript-tutorial/en.javascript.info/tree/master |
| Discord Chat | https://discord.gg/AuEWpFkfD4 |
| Part 1The JavaScript language | https://javascript.info/#tab-1 |
| Part 2Browser: Document, Events, Interfaces | https://javascript.info/#tab-2 |
| Part 3Additional articles | https://javascript.info/#tab-3 |
| An introduction | https://javascript.info/getting-started |
| An Introduction to JavaScript | https://javascript.info/intro |
| Manuals and specifications | https://javascript.info/manuals-specifications |
| Code editors | https://javascript.info/code-editors |
| Developer console | https://javascript.info/devtools |
| JavaScript Fundamentals | https://javascript.info/first-steps |
| Hello, world! | https://javascript.info/hello-world |
| Code structure | https://javascript.info/structure |
| The modern mode, "use strict" | https://javascript.info/strict-mode |
| Variables | https://javascript.info/variables |
| Data types | https://javascript.info/types |
| Interaction: alert, prompt, confirm | https://javascript.info/alert-prompt-confirm |
| Type Conversions | https://javascript.info/type-conversions |
| Basic operators, maths | https://javascript.info/operators |
| Comparisons | https://javascript.info/comparison |
| Conditional branching: if, '?' | https://javascript.info/ifelse |
| Logical operators | https://javascript.info/logical-operators |
| Nullish coalescing operator '??' | https://javascript.info/nullish-coalescing-operator |
| Loops: while and for | https://javascript.info/while-for |
| The "switch" statement | https://javascript.info/switch |
| Functions | https://javascript.info/function-basics |
| Function expressions | https://javascript.info/function-expressions |
| Arrow functions, the basics | https://javascript.info/arrow-functions-basics |
| JavaScript specials | https://javascript.info/javascript-specials |
| More… | https://javascript.info/ |
| Code quality | https://javascript.info/code-quality |
| Debugging in the browser | https://javascript.info/debugging-chrome |
| Coding Style | https://javascript.info/coding-style |
| Comments | https://javascript.info/comments |
| Ninja code | https://javascript.info/ninja-code |
| Automated testing with Mocha | https://javascript.info/testing-mocha |
| Polyfills and transpilers | https://javascript.info/polyfills |
| Objects: the basics | https://javascript.info/object-basics |
| Objects | https://javascript.info/object |
| Object references and copying | https://javascript.info/object-copy |
| Garbage collection | https://javascript.info/garbage-collection |
| Object methods, "this" | https://javascript.info/object-methods |
| Constructor, operator "new" | https://javascript.info/constructor-new |
| Optional chaining '?.' | https://javascript.info/optional-chaining |
| Symbol type | https://javascript.info/symbol |
| Object to primitive conversion | https://javascript.info/object-toprimitive |
| Data types | https://javascript.info/data-types |
| Methods of primitives | https://javascript.info/primitives-methods |
| Numbers | https://javascript.info/number |
| Strings | https://javascript.info/string |
| Arrays | https://javascript.info/array |
| Array methods | https://javascript.info/array-methods |
| Iterables | https://javascript.info/iterable |
| Map and Set | https://javascript.info/map-set |
| WeakMap and WeakSet | https://javascript.info/weakmap-weakset |
| Object.keys, values, entries | https://javascript.info/keys-values-entries |
| Destructuring assignment | https://javascript.info/destructuring-assignment |
| Date and time | https://javascript.info/date |
| JSON methods, toJSON | https://javascript.info/json |
| More… | https://javascript.info/ |
| Advanced working with functions | https://javascript.info/advanced-functions |
| Recursion and stack | https://javascript.info/recursion |
| Rest parameters and spread syntax | https://javascript.info/rest-parameters-spread |
| Variable scope, closure | https://javascript.info/closure |
| The old "var" | https://javascript.info/var |
| Global object | https://javascript.info/global-object |
| Function object, NFE | https://javascript.info/function-object |
| The "new Function" syntax | https://javascript.info/new-function |
| Scheduling: setTimeout and setInterval | https://javascript.info/settimeout-setinterval |
| Decorators and forwarding, call/apply | https://javascript.info/call-apply-decorators |
| Function binding | https://javascript.info/bind |
| Arrow functions revisited | https://javascript.info/arrow-functions |
| More… | https://javascript.info/ |
| Object properties configuration | https://javascript.info/object-properties |
| Property flags and descriptors | https://javascript.info/property-descriptors |
| Property getters and setters | https://javascript.info/property-accessors |
| Prototypes, inheritance | https://javascript.info/prototypes |
| Prototypal inheritance | https://javascript.info/prototype-inheritance |
| F.prototype | https://javascript.info/function-prototype |
| Native prototypes | https://javascript.info/native-prototypes |
| Prototype methods, objects without __proto__ | https://javascript.info/prototype-methods |
| Classes | https://javascript.info/classes |
| Class basic syntax | https://javascript.info/class |
| Class inheritance | https://javascript.info/class-inheritance |
| Static properties and methods | https://javascript.info/static-properties-methods |
| Private and protected properties and methods | https://javascript.info/private-protected-properties-methods |
| Extending built-in classes | https://javascript.info/extend-natives |
| Class checking: "instanceof" | https://javascript.info/instanceof |
| Mixins | https://javascript.info/mixins |
| Error handling | https://javascript.info/error-handling |
| Error handling, "try...catch" | https://javascript.info/try-catch |
| Custom errors, extending Error | https://javascript.info/custom-errors |
| Promises, async/await | https://javascript.info/async |
| Introduction: callbacks | https://javascript.info/callbacks |
| Promise | https://javascript.info/promise-basics |
| Promises chaining | https://javascript.info/promise-chaining |
| Error handling with promises | https://javascript.info/promise-error-handling |
| Promise API | https://javascript.info/promise-api |
| Promisification | https://javascript.info/promisify |
| Microtasks | https://javascript.info/microtask-queue |
| Async/await | https://javascript.info/async-await |
| Generators, advanced iteration | https://javascript.info/generators-iterators |
| Generators | https://javascript.info/generators |
| Async iteration and generators | https://javascript.info/async-iterators-generators |
| Modules | https://javascript.info/modules |
| Modules, introduction | https://javascript.info/modules-intro |
| Export and Import | https://javascript.info/import-export |
| Dynamic imports | https://javascript.info/modules-dynamic-imports |
| Miscellaneous | https://javascript.info/js-misc |
| Proxy and Reflect | https://javascript.info/proxy |
| Eval: run a code string | https://javascript.info/eval |
| Currying | https://javascript.info/currying-partials |
| Reference Type | https://javascript.info/reference-type |
| BigInt | https://javascript.info/bigint |
| Unicode, String internals | https://javascript.info/unicode |
| WeakRef and FinalizationRegistry | https://javascript.info/weakref-finalizationregistry |
| Document | https://javascript.info/document |
| Browser environment, specs | https://javascript.info/browser-environment |
| DOM tree | https://javascript.info/dom-nodes |
| Walking the DOM | https://javascript.info/dom-navigation |
| Searching: getElement*, querySelector* | https://javascript.info/searching-elements-dom |
| Node properties: type, tag and contents | https://javascript.info/basic-dom-node-properties |
| Attributes and properties | https://javascript.info/dom-attributes-and-properties |
| Modifying the document | https://javascript.info/modifying-document |
| Styles and classes | https://javascript.info/styles-and-classes |
| Element size and scrolling | https://javascript.info/size-and-scroll |
| Window sizes and scrolling | https://javascript.info/size-and-scroll-window |
| Coordinates | https://javascript.info/coordinates |
| More… | https://javascript.info/ |
| Introduction to Events | https://javascript.info/events |
| Introduction to browser events | https://javascript.info/introduction-browser-events |
| Bubbling and capturing | https://javascript.info/bubbling-and-capturing |
| Event delegation | https://javascript.info/event-delegation |
| Browser default actions | https://javascript.info/default-browser-action |
| Dispatching custom events | https://javascript.info/dispatch-events |
| UI Events | https://javascript.info/event-details |
| Mouse events | https://javascript.info/mouse-events-basics |
| Moving the mouse: mouseover/out, mouseenter/leave | https://javascript.info/mousemove-mouseover-mouseout-mouseenter-mouseleave |
| Drag'n'Drop with mouse events | https://javascript.info/mouse-drag-and-drop |
| Pointer events | https://javascript.info/pointer-events |
| Keyboard: keydown and keyup | https://javascript.info/keyboard-events |
| Scrolling | https://javascript.info/onscroll |
| Forms, controls | https://javascript.info/forms-controls |
| Form properties and methods | https://javascript.info/form-elements |
| Focusing: focus/blur | https://javascript.info/focus-blur |
| Events: change, input, cut, copy, paste | https://javascript.info/events-change-input |
| Forms: event and method submit | https://javascript.info/forms-submit |
| Document and resource loading | https://javascript.info/loading |
| Page: DOMContentLoaded, load, beforeunload, unload | https://javascript.info/onload-ondomcontentloaded |
| Scripts: async, defer | https://javascript.info/script-async-defer |
| Resource loading: onload and onerror | https://javascript.info/onload-onerror |
| Miscellaneous | https://javascript.info/ui-misc |
| Mutation observer | https://javascript.info/mutation-observer |
| Selection and Range | https://javascript.info/selection-range |
| Event loop: microtasks and macrotasks | https://javascript.info/event-loop |
| Frames and windows | https://javascript.info/frames-and-windows |
| Popups and window methods | https://javascript.info/popup-windows |
| Cross-window communication | https://javascript.info/cross-window-communication |
| The clickjacking attack | https://javascript.info/clickjacking |
| Binary data, files | https://javascript.info/binary |
| ArrayBuffer, binary arrays | https://javascript.info/arraybuffer-binary-arrays |
| TextDecoder and TextEncoder | https://javascript.info/text-decoder |
| Blob | https://javascript.info/blob |
| File and FileReader | https://javascript.info/file |
| Network requests | https://javascript.info/network |
| Fetch | https://javascript.info/fetch |
| FormData | https://javascript.info/formdata |
| Fetch: Download progress | https://javascript.info/fetch-progress |
| Fetch: Abort | https://javascript.info/fetch-abort |
| Fetch: Cross-Origin Requests | https://javascript.info/fetch-crossorigin |
| Fetch API | https://javascript.info/fetch-api |
| URL objects | https://javascript.info/url |
| XMLHttpRequest | https://javascript.info/xmlhttprequest |
| Resumable file upload | https://javascript.info/resume-upload |
| Long polling | https://javascript.info/long-polling |
| WebSocket | https://javascript.info/websocket |
| Server Sent Events | https://javascript.info/server-sent-events |
| More… | https://javascript.info/ |
| Storing data in the browser | https://javascript.info/data-storage |
| Cookies, document.cookie | https://javascript.info/cookie |
| LocalStorage, sessionStorage | https://javascript.info/localstorage |
| IndexedDB | https://javascript.info/indexeddb |
| Animation | https://javascript.info/animation |
| Bezier curve | https://javascript.info/bezier-curve |
| CSS-animations | https://javascript.info/css-animations |
| JavaScript animations | https://javascript.info/js-animation |
| Web components | https://javascript.info/web-components |
| From the orbital height | https://javascript.info/webcomponents-intro |
| Custom elements | https://javascript.info/custom-elements |
| Shadow DOM | https://javascript.info/shadow-dom |
| Template element | https://javascript.info/template-element |
| Shadow DOM slots, composition | https://javascript.info/slots-composition |
| Shadow DOM styling | https://javascript.info/shadow-dom-style |
| Shadow DOM and events | https://javascript.info/shadow-dom-events |
| Regular expressions | https://javascript.info/regular-expressions |
| Patterns and flags | https://javascript.info/regexp-introduction |
| Character classes | https://javascript.info/regexp-character-classes |
| Unicode: flag "u" and class \p{...} | https://javascript.info/regexp-unicode |
| Anchors: string start ^ and end $ | https://javascript.info/regexp-anchors |
| Multiline mode of anchors ^ $, flag "m" | https://javascript.info/regexp-multiline-mode |
| Word boundary: \b | https://javascript.info/regexp-boundary |
| Escaping, special characters | https://javascript.info/regexp-escaping |
| Sets and ranges [...] | https://javascript.info/regexp-character-sets-and-ranges |
| Quantifiers +, *, ? and {n} | https://javascript.info/regexp-quantifiers |
| Greedy and lazy quantifiers | https://javascript.info/regexp-greedy-and-lazy |
| Capturing groups | https://javascript.info/regexp-groups |
| Backreferences in pattern: \N and \k | https://javascript.info/regexp-backreferences |
| Alternation (OR) | | https://javascript.info/regexp-alternation |
| Lookahead and lookbehind | https://javascript.info/regexp-lookahead-lookbehind |
| Catastrophic backtracking | https://javascript.info/regexp-catastrophic-backtracking |
| Sticky flag "y", searching at position | https://javascript.info/regexp-sticky |
| Methods of RegExp and String | https://javascript.info/regexp-methods |
| More… | https://javascript.info/ |
| terms of usage | https://javascript.info/terms |
| https://twitter.com/share?url=https%3A%2F%2Fjavascript.info%2F |
| https://www.facebook.com/sharer/sharer.php?s=100&p%5Burl%5D=https%3A%2F%2Fjavascript.info%2F |
| Tutorial map | https://javascript.info/tutorial/map |
| Comments | https://javascript.info/#comments |
| submit a GitHub issue | https://github.com/javascript-tutorial/en.javascript.info/issues/new |
| plnkr | https://plnkr.co/edit/?p=preview |
| jsbin | https://jsbin.com |
| codepen | http://codepen.io |
| about the project | https://javascript.info/about |
| contact us | https://javascript.info/about#contact-us |
| terms of usage | https://javascript.info/terms |
| privacy policy | https://javascript.info/privacy |
Viewport: width=device-width, initial-scale=1, user-scalable=yes, minimum-scale=1.0