JavaScript
JavaScript standard: ECMA-262 (https://github.com/tc39/ecma262); a.k.a. ECMAScript.
New features: https://github.com/tc39/proposals/blob/master/finished-proposals.md
JavaScript Engines
Browser
- Chrome: V8
- Firefox: SpiderMonkey (the first JavaScript engine, originally used in Netscape Navigator) written in C++, Rust and JavaScript.
- Safari: Nitro
Server-side
- Node.js: uses the Google V8 JavaScript engine to execute code.
- Deno: the name is just node reordered. written in Rust.
- Bun: written in Zip and cpp; as name suggests, also a bundler.
Browser Object Model (BOM)
window
object is used to interact with the browser. The following object can be used directly or under window
, e.g. window.navigator
or navigator
document
: HTML DOMnavigator
: to get browser informationhistory
screen
location
: url, host, path, protocol (NOT the user location)
JavaScript Ecosystem
Most popular web frameworks
- React: developed and used by Facebook
- Next.js: built on top of React.js
- Angular: developed by Google
- Vue
Registries
- npm: the widely used registry, with millions of packages.
- jsr: the new regsitry, with native TypeScript support; ECMAScript modules only; built for all runtimes (node, deno, bun, browsers).
Bundler
- WebPack: for apps. Introduced the JavaScript world to the concept of a convention-over-configuration, all-in-one build-pipeline.
- Rollup: for libs.
- Vite: written in Go; the successor to Webpack?
- Turbopack: written in Rust; developed by Vercel; the sibling of Turborepo. Together, they make up the two cornerstones of Vercel’s systems-oriented efforts to evolve front-end tooling: Turbopack is the bundler and Turborepo is monorepo build tool.
Typecheck
- TypeScript: can be compiled to JavaScript
- better tooling: advanced autocompletion, navigation, and refactoring
- developed by Microsoft
- SUPERSET OF JAVASCRIPT, javascript code is also valid typescript code
- Flow: also developed by Facebook, so works fine with React
Other notable libs
- Babel: the compiler
- D3 / HighCharts: for data visualization
- Express.js: the node.js web framework
- Bootstrap: the CSS framework from Twitter.
- Lerna: build multiple packages from the same repo.
- ESLint: lint...
es6 backtick
Template literals can be used multi line and may use "interpolation" to insert the content of variables:
var a = 123,
str = `---
a is: ${a}
----`;
console.log(str);
Will output:
---
a is: 123
---
Integer
JavaScript does not have an integer type. JavaScript is only able to handle 52bit integers.