JavaScript

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.

Flow official website

Flow code repository

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:

VersionNameRelease YearFeatures
ES1ECMAScript 11997Initial Release
ES2ECMAScript 21998Minor Editorial Changes
ES3ECMAScript 31999Added: Regular Expression try/catch Exception Handling switch case and do-while
ES4ECMAScript 4 –Abandoned due to conflicts
ES5ECMAScript 52009Added: JavaScript “strict mode” JSON support JS getters and setters
ES6ECMAScript 20152015Added: let and const Class declaration import and export for..of loop Arrow functions
ES7ECMAScript 20162016Added: Block scope for variable async/await Array.includes function Exponentiation Operator
ES8ECMAScript 20172017Added: Object.values Object.entries Object.getOwnPropertiesDescriptors
ES9ECMAScript 20182018Added: spread operator rest parameters
ES10ECMAScript 20192019Added: Array.flat() Array.flatMap() Array.sort is now stable
ES11ECMAScript 20202020Added: BigInt primitive type nullish coalescing operator
ES12ECMAScript 20212021Added: String.replaceAll() Method Promise.any() Method
ES13ECMAScript 20222022Added: Top-level await New class elements Static block inside classes
ES14ECMAScript 20232023Added: 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.

Node.js official website

Node.js API

Node.js Doc Guides

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.

Babel official website

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:

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

Leave a Reply

Your email address will not be published. Required fields are marked *