JavaScript Fundamentals
JavaScript is a programming language used to make web pages interactive and to build applications in browsers, servers, and other runtimes. A host supplies capabilities such as the DOM, files, or networking around the core language.
itProgramming languages | OpenSkills.info
Intro
JavaScript Fundamentals
JavaScript is a dynamic programming language standardized as ECMAScript. The language defines values, expressions, statements, functions, objects, modules, and asynchronous primitives. A host environment supplies the capabilities that connect a program to the outside world. Browsers provide the Document Object Model, events, storage, and network APIs. Server runtimes provide their own file, process, and networking APIs.
This boundary matters. Array, Promise, and Map belong to JavaScript. document, fetch, and file-system functions come from a host. Code that uses only language features is broadly portable. Code that calls a host API needs a compatible environment.
How a program runs
A JavaScript engine parses source text, creates bindings for declarations, and evaluates statements in an execution context. Each function call creates another execution context. Lexical environments connect identifier names to bindings, which is why a nested function can still access variables from the scope where it was created.
JavaScript runs one statement at a time within an execution thread. A host can perform work outside that thread, then schedule callbacks or promise reactions. The event loop is a host mechanism, not a language statement. Long synchronous work delays other scheduled JavaScript on the same thread.
Continue the course
This section is part of the paid course.
See pricing to subscribe, or log in if you already have access.
Where this skill leads
Relevant careers
See how this topic contributes to broader role-level skill maps.
Sources
- https://tc39.es/ecma262/
Supports
- ECMAScript language types, objects, execution contexts, functions, modules, and promises
- Normative semantics for declarations, operators, control flow, and errors
- https://ecma-international.org/publications-and-standards/standards/ecma-262/
Supports
- Publication dates for ECMAScript editions from 1997 onward
- Third, fifth, sixth, and annual edition milestones
- https://ecma-international.org/news/ecma-262-the-ecmascript-javascript-the-most-popular-web-scripting-standard-is-celebrating-its-20th-birthday/
Supports
- TC39 work beginning in November 1996
- First edition approval and publication in 1997
- https://tc39.es/process-document/
Supports
- Staged proposal process for evolving ECMAScript
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide
Supports
- Study progression across grammar, control flow, functions, collections, objects, promises, and modules
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Language_overview
Supports
- Dynamic multi-paradigm language model and built-in types
- Functions as callable objects and closures over surrounding scope
- Language and host boundary, runtime APIs, modules, and execution constraints
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Grammar_and_types
Supports
- const, let, and var declarations, scope, and hoisting
- Primitive values, literals, and type conversion
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Functions
Supports
- Function declarations, calls, parameters, return behavior, scope, and arrow functions
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Closures
Supports
- Closures retaining access to lexical environments
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_objects
Supports
- Object properties, computed access, methods, and object creation
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Inheritance_and_the_prototype_chain
Supports
- Prototype-based property lookup and inheritance
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Equality_comparisons_and_sameness
Supports
- Strict equality and loose equality behavior
- NaN comparison behavior
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Loops_and_iteration
Supports
- for-of value iteration and for-in property enumeration
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Control_flow_and_error_handling
Supports
- throw, try, catch, finally, and Error objects
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Using_promises
Supports
- Promise states, chaining, rejection handling, composition, and timing
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function
Supports
- Async functions returning promises and await behavior
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules
Supports
- Import and export syntax, strict mode, evaluation, and cyclic import behavior
- Browser module loading and troubleshooting
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax
Supports
- Shallow object and array copying with spread syntax
- https://dl.acm.org/doi/10.1145/3386327
Supports
- JavaScript creation at Netscape in 1995
- Early standardization, ES3, ES5, and ECMAScript 2015 history
- https://v8.dev/blog/10-years
Supports
- V8 and Chrome launch on September 2, 2008
- First Node.js release embedding V8 in 2009
- https://github.com/sindresorhus/awesome
Supports
- Discovery of the curated Awesome JavaScript list
- https://github.com/sorrycc/awesome-javascript
Supports
- Discovery of ESLint, Prettier, Vite, pnpm, TypeScript, Playwright, and Bun
- https://eslint.org/docs/latest/use/getting-started
Supports
- Static analysis of JavaScript patterns and current configuration workflow
- https://prettier.io/docs/
Supports
- Deterministic formatting by parsing and reprinting supported source files
- https://vite.dev/guide/
Supports
- Development server and production build roles in browser projects
- https://pnpm.io/motivation
Supports
- Content-addressable dependency storage and npm-compatible package management
- https://www.typescriptlang.org/docs/handbook/typescript-from-scratch.html
Supports
- Static checking of JavaScript programs and erased types at runtime
- https://playwright.dev/docs/intro
Supports
- Browser testing across Chromium, Firefox, and WebKit
- https://nodejs.org/docs/latest/api/
Supports
- Node.js host APIs, modules, processes, files, networking, and asynchronous operations
- https://docs.deno.com/runtime/
Supports
- Deno as a JavaScript runtime with permissions and an integrated toolchain
- https://bun.com/docs/runtime
Supports
- Bun as a JavaScriptCore-based runtime with package and development tooling
- https://developer.chrome.com/docs/devtools/javascript/reference
Supports
- JavaScript breakpoints, stepping, scopes, values, and snippets in Chrome DevTools
- https://firefox-source-docs.mozilla.org/devtools-user/debugger/
Supports
- JavaScript breakpoints, stepping, watch expressions, and remote debugging in Firefox
- https://code.visualstudio.com/docs/languages/javascript
Supports
- JavaScript editing, IntelliSense, navigation, refactoring, and debugging in Visual Studio Code
- https://www.jetbrains.com/help/webstorm/javascript-specific-guidelines.html
Supports
- JavaScript project configuration, code assistance, refactoring, and debugging in WebStorm
