JavaScript, commonly abbreviated as JS, is a programming language focused on web development.
JavaScript Description
JavaScript is a multi-purpose, multi-paradigm, interpreted programming language.
It is extensively used on web development as a programming language for the front-end and back-end functionality.
When building a websites, there are different technologies involved and each one has a function. A summary of these technologies and its place for JavaScript is described below:
- HTML defines what are the components within a page
- CSS defines how the components look like
- JavaScript (or any alternative front-end and back-end programming languages) defines how these components react to user interaction
Apart from websites, desktop and mobile applications can also be created using JavaScript, though it was not its original purpose, through the use of specific frameworks.
JavaScript is interpreted, i.e., it is real-time compiled. Modern web browsers are able to render HTML 5 code (including JavaScript) locally and display the web with all its functionality to the user. Alternatively, the code can be run on the local operating system using tools like as Node.js.
JavaScript Context
JavaScript was originally developed by Brendan Eich, while he was working at Netscape. It was first release in 1995.
As of 2023, the JavaScript standard definition is maintained by ECMA. In parallel, there are different implementations maintained by the respective organizations behind it.
JavaScript as a Trademark
JavaScript is a trademark originally registered by Sun Microsystems, and owned by Oracle as of 2025. This company has its own implementation for the standard that carries the trademark, so the term JavaScript should be used just to refer to this specific implementation from a technical point of view. Nevertheless, JavaScript is also is the main way that the common world uses to name the programming language itself.
The term JavaScript is confusing to many common users because it is intentionally similar to Java, though it is a very different technology. In addition, it is trademarked by a company so it cannot be considered a vendor-neutral term within the software industry.
JavaScript is still the most usual way to refer to the technology. The acronym JS is the closest to a vendor-neutral term, and though it is extended and usually understood among developers it is still a secondary term.
There are other candidates to be used as alternative terms, like LiveScript and ECMAscript, though they are not proposed here because of the reasons explained.
LiveScript was the project name of the programming language on its first releases before it changed to JavaScript to take advantage of the popularity of Java. LiveScript is nowadays a different functional programming language aimed to be transpiled its code into JavaScript, what invalidates it as a possible (and mostly unknown) alternative.
ECMAscript is the name of the standard that defines JavaScript. In addition to not being an attractive and commercial term, it is commonly used to refer to the standard itself rather than the programming language, so it is still not a good candidate.
In conclusion, this blog refers to the programming language as JavaScript, as it is the most extended terms despite the concerns on its correctness explained on this section. When vendor-neutrality is an issue, the acronym JS can be used instead.
JavaScript Programming Language Influence
Main syntax is influenced from Java.
First class functions are influenced from Scheme.
The prototype-based inheritance from Self.
JavaScript Extensions
JavaScript extensions are languages that extend the JavaScript language.
JavaScript extensions featured on this post:
- TypeScript
- Flow
TypeScript
TypeScript was developed before ES6.
As its name implies, it adds types to JavaScript but also additional features.
It is developed by American company Microsoft.
The JavaScript front-end framework is based on your
Flow
Flow is a static type checker for JavaScript. Do not confuse it with the programming language FLOW.
Unlike TypeScript, it is focused on the type checking feature, not adding changes in the rest of features.
It is developed by American company Meta.
JavaScript Programming Language
JavaScript Standard
ECMAScript, sometimes abbreviated as ES, is a standard for scripting languages, including JavaScript, JScript, and ActionScript.
ECMAScript is standardized through the organization Ecma International in the document ECMA-262. You can read the latest version of this document on this external link.
Web browsers and Node apply the ECMAScript standard using their own implementations.
There are different versions of ECMAScript standard. One of the major changes was introduced in 2015, so all these modern ECMAScript versions are colloquially referred as JavaScript ES201x or ES201*.
To ensure backwards compatibility, JavaScript written using ES201x standards (“next-gen”) can be downgraded to a more universal ECMAScript version (“browser-compatible”).
JavaScript Standard Versions
You can find the JavaScript Standard versions on this external link.
JavaScript Standard Versions:
Version | Name | Release Year | Features |
---|---|---|---|
ES1 | ECMAScript 1 | 1997 | Initial Release |
ES2 | ECMAScript 2 | 1998 | Minor Editorial Changes |
ES3 | ECMAScript 3 | 1999 | Added: Regular Expression try/catch Exception Handling switch case and do-while |
ES4 | ECMAScript 4 | – | Abandoned due to conflicts |
ES5 | ECMAScript 5 | 2009 | Added: JavaScript “strict mode” JSON support JS getters and setters |
ES6 | ECMAScript 2015 | 2015 | Added: let and const Class declaration import and export for..of loop Arrow functions |
ES7 | ECMAScript 2016 | 2016 | Added: Block scope for variable async/await Array.includes function Exponentiation Operator |
ES8 | ECMAScript 2017 | 2017 | Added: Object.values Object.entries Object.getOwnPropertiesDescriptors |
ES9 | ECMAScript 2018 | 2018 | Added: spread operator rest parameters |
ES10 | ECMAScript 2019 | 2019 | Added: Array.flat() Array.flatMap() Array.sort is now stable |
ES11 | ECMAScript 2020 | 2020 | Added: BigInt primitive type nullish coalescing operator |
ES12 | ECMAScript 2021 | 2021 | Added: String.replaceAll() Method Promise.any() Method |
ES13 | ECMAScript 2022 | 2022 | Added: Top-level await New class elements Static block inside classes |
ES14 | ECMAScript 2023 | 2023 | Added: toSorted method toReversed method findLast, and findLastIndex methods on Array.prototype and TypedArray.prototypet |
JavaScript Main Features
Some JavaScript features
- Non-typed
- Imperative and object-oriented paradigms
- Functions can be stored as variables
- Functions parameters can have default values
- Asynchronous concurrency by default
Functions
Functions can be stored as variables.
Functions can be given as arguments in a function. An example of function that works this way is Array.sort().
Default values for parameters can be used in JavaScript since ES6.
Method chaining means that if a function returns an object, a method of than object can be used. Example:
object.method1().method2()
When a function returns a string, this string can be the name of a function and be called.
functionReturningString()()
There are the main types of functions in JavaScript:
- Standard functions
- Construction functions
- Arrow functions
Arrow functions present an alternative syntax to declare functions, but apart from that, it has characteristics that make them different to standard functions:
- They do not have prototype
- Their scope is where they were declared, not where they are invoked.
Object-oriented
The object oriented approach is different to other languages like C++ or Java. It uses a prototype-based inheritance instead, based on Self.
Synchronization in JavaScript
Synchronization models in Node.js:
- Call-back
- Promise
The JavaScript promise functionality was implemented in ES6 and later.
JavaScript IDEs
JavaScript IDEs:
- Dedicated
- WebStorm
- Not-dedicated
- Visual Studio Code
- Sublime Text
WebStorm is a proprietary IDE developed by JetBrains.
You can read this post about Visual Studio Code.
JavaScript Documentation and References
You can find the JavaScript entry at Mozilla Developer Network on this external link.
Learning JavaScript
You can find learning resources for JavaScript on Mozilla Developer Network on this external link.
You can read this article about source code repositories to master JavaScript on this external link.
JavaScript Runtime
Node.js, sometimes just called Node, is a JavaScript runtime environment.
You can read more on this post about Node.js.
JavaScript Tools
JavaScript tools:
- Runtime environment
- Node.js
- Package manager
- npm
- Code bundler
- Webpack
- Parcels
- Transpiler
- Babel
- Uncategorized tools
- Gulp
- Serve
Runtime environment
Node.js
Node.js is a JavaScript runtime environment. It allows to run code from an OS, without the need of a browser.
It is mandatory to use an application like Node.js for back-end functionality written in JavaScript, such as a back-end Java framework.
The JavaScript back-end framework Node.js relies on nvm.
Package Manager
npm
npm is a package manager to install Node.js modules.
It is used to install other tools referred in this section.
npm modules can be installed.
When run without any arguments, npm install
reads the package.json file in your project and installs all the packages listed as dependencies (and their own dependencies) into a node_modules folder. This is crucial for setting up a new project or making sure you have the right version of everything.
Code Bundling
Code bundling:
- Webpack
- Parcels
Transpiler
Babel
Babel is a transpiler that takes JavaScript source code as an input and then convert it to the equivalent code of a previous JavScript version. For example, it converts arrow functions (introduced in ES6) to regular functions.
Babel ensures backwards compatibility for browsers that has not yet implemented the latest versions.
Uncategorized Tools
Gulp
Gulp is a JavaScript-based toolkit used for automating tasks in web development, particularly front-end workflows.
serve
serve is a JavaScript server-side framework for building server-rendered user interfaces.
It is based on Node.js.
It is installed through npm.
JavaScript Frameworks
Web frameworks:
- Front-end
- React
- Back-end
- Express.js
- Nestjs
- Fastify
- Fullstack
- Meteor.js
Desktop app frameworks for JavaScript:
- Electron
- Tauri
- nw.js.
Mobile app frameworks for JavaScript:
- Capacitor
JavaScript Libraries
JavaScript Libraries for Video Games
You can read this post about JavaScript libraries for video games.
JavaScript Libraries for Mathematics
MathML is a JavaScript library to write mathematical expressions.
JavaScript Documentation
JSDoc is a syntax to generate JavaScript documentation.
You might also be interested in…
External references
- Mozilla Developer Network; “JavaScript“; Mozilla Developer Network
- ECMAScript standard
- Ecma International; “ECMA-262“; Ecma International
- Babel
- Babel; “Babel“; Babeljs.io
- Learning
- Sumit Saraubh; “10 GitHub repositories to achieve JavaScript mastery“; dev.to/novu